Duvo MCP
Was dieses MCP kann
Provides governed retail and CPG operations for cases, queues, approvals, automations, process documentation, integrations, and audit-ready execution.
Tools
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nodeId', 'suggestionId'], 'properties': {'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'suggestionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The proposed area folder to accept.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token'], 'properties': {'token': {'type': 'string'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nodeId', 'suggestionId'], 'properties': {'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'suggestionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['build_id', 'builder_run_id', 'expected_started_at'], 'properties': {'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The revision identifier.'}, 'builder_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The builder run returned by generation or status, belonging to this revision.'}, 'expected_started_at': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$'}, {'type': 'null'}], 'description': 'Copy started_at from the status being reviewed. Each prompt has its own builder run ID; stale review identities return 409.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'revision_id'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Revision name recorded on activation (omit to keep the current one)'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Revision description recorded on activation (null clears; omit to keep current)'}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}, 'repin_pending_cases': {'type': 'boolean', 'description': "Re-pin the automation's pending, unclaimed cases onto the newly activated revision"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'case_queue_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Queue ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'role': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'email': {'anyOf': [{'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}, {'type': 'null'}]}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'A process landscape node that is linked to a real process.'}, 'teamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'teamRole': {'anyOf': [{'enum': ['team:owner', 'team:superadmin', 'team:admin', 'team:manager', 'team:builder', 'team:member', 'team:clarity-member'], 'type': 'string'}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'label', 'question', 'type'], 'properties': {'type': {'enum': ['freeText', 'identifier', 'number', 'select', 'multiSelect', 'list', 'orderedList', 'personList'], 'type': 'string', 'description': 'Value type; table, compound and sourcePointer are template-only'}, 'label': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short name for the field, shown as its row heading'}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1, 'description': 'Required for select and multiSelect, refused otherwise'}, 'section': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Section the field is grouped under'}, {'type': 'null'}], 'default': None, 'description': 'Section to add the field to, or null for none'}, 'bindings': {'type': 'array', 'items': {'enum': ['context', 'tool'], 'type': 'string'}, 'default': ['context'], 'minItems': 1, 'description': 'How the value reaches the automation (context, tool)'}, 'question': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'The setup question asked for this field'}, 'required': {'type': 'boolean', 'default': False, 'description': 'Whether the field must be filled'}, 'fill_mode': {'enum': ['interview', 'setup'], 'type': 'string', 'default': 'interview', 'description': 'How the field is filled (interview, setup)'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The automation's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'toolCallId', 'answers'], 'properties': {'answers': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'toolCallId': {'type': 'string', 'minLength': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id', 'labels'], 'properties': {'labels': {'type': 'array', 'items': {'type': 'object', 'required': ['value'], 'properties': {'key': {'type': 'string', 'default': ''}, 'value': {'type': 'string', 'minLength': 1}}}, 'maxItems': 50, 'minItems': 1}, 'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'transformation_proposal_id', 'request_id', 'user_id'], 'properties': {'user_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Team member to assign, or null to unassign'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'request_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The extra-capture-request id'}, 'transformation_proposal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The automation proposal id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nodeId', 'requestId', 'userId'], 'properties': {'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'userId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}]}, 'requestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId', 'teamId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'intent': {'enum': ['assign', 'accept-proposal'], 'type': 'string', 'description': 'Pass "accept-proposal" when the node is expected to still be a proposed process; the call then fails if someone already accepted it, instead of silently moving a real process.'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The process node whose owning team changes.'}, 'teamId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'The team that owns the process from now on. A process always belongs to a team, so null is rejected.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'labels': {'type': 'array', 'items': {'type': 'object', 'required': ['value'], 'properties': {'value': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'colorHue': {'type': 'integer', 'default': 215, 'maximum': 360, 'minimum': 0}}}, 'maxItems': 50, 'minItems': 1}, 'labelIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 50, 'minItems': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'connection_id'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'family_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'family_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_ids'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'integration_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1, 'description': 'Integration IDs (or custom integration IDs) to attach to the revision'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'buildId', 'exposedCredentialId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'buildId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'exposedCredentialId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'buildId', 'credentialId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'buildId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'credentialId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mcp_server_url', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Human-readable name to display for the connection.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'return_url': {'type': 'string', 'description': "Where to send the user's browser after consent completes. Accepts an absolute URL on a domain Duvo allows, or a path relative to the Duvo frontend (e.g. `/integrations/slack`)."}, 'mcp_server_url': {'type': 'string', 'format': 'uri', 'description': 'URL of the MCP server requiring OAuth.'}, 'oauth_client_id': {'type': 'string', 'minLength': 1, 'description': "OAuth client ID of a client the user registered on the authorization server themselves (e.g. a NetSuite Integration record). Takes precedence over preregistered credentials and Dynamic Client Registration. Cannot be combined with custom_integration_id. On reconnect, omit to reuse the connection's stored credentials, or provide to replace (rotate) them."}, 'integration_type': {'type': 'string', 'description': "Optional catalog integration type (e.g. `netsuite`, `asana`). When it names a known MCP OAuth catalog integration and `mcp_server_url` matches that integration's registered server, the connection is treated as a catalog connection; otherwise it requires the custom MCP servers capability."}, 'oauth_client_secret': {'type': 'string', 'minLength': 1, 'description': 'Client secret for `oauth_client_id`. Omit for public clients (PKCE-only).'}, 'custom_integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Optional ID of a custom integration this connection should be associated with.'}, 'reconnect_instance_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'When set, the OAuth flow will update the existing connection in place rather than creating a new one.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeIds', 'people'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'people': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'email', 'processRole', 'teamRole'], 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'email': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'teamRole': {'enum': ['team:owner', 'team:superadmin', 'team:admin', 'team:manager', 'team:builder', 'team:member', 'team:clarity-member'], 'type': 'string'}, 'processRole': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1}, 'nodeIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 20, 'minItems': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id'], 'properties': {'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'transformation_proposal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Automation-proposal snapshot to build the automation from. Defaults to the process's live proposal."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['members'], 'properties': {'members': {'type': 'array', 'items': {'type': 'object', 'required': ['email', 'role'], 'properties': {'role': {'type': 'string', 'description': 'Team role to grant. One of: team:owner, team:superadmin, team:admin (deprecated), team:manager, team:builder, team:member, team:clarity-member. You cannot grant a role above your own.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address of the person to invite.'}}}, 'maxItems': 50, 'description': 'People to invite, at most 50 per request. An email already on the team, or already holding a pending invitation, is skipped rather than failing the batch.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'frontendUrl': {'type': 'string', 'format': 'uri', 'description': 'Deprecated. Accepted for backward compatibility and IGNORED: the accept link is always built from the server-configured app origin, so a caller cannot point invitation emails at another host.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'search': {'type': 'string', 'description': 'Free-text search selecting the cases when all_matching is true.'}, 'filters': {'type': 'object', 'properties': {'labels': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'status': {'type': 'array', 'items': {'enum': ['all', 'pending', 'processing', 'needs_input', 'postponed', 'needs_review', 'resolved', 'canceled', 'claimed', 'completed', 'failed'], 'type': 'string'}}, 'priority': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}}, 'json_data': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'created_at_to': {'type': 'string'}, 'updated_at_to': {'type': 'string'}, 'issue_severity': {'type': 'array', 'items': {'enum': ['critical', 'medium'], 'type': 'string'}}, 'created_at_from': {'type': 'string'}, 'updated_at_from': {'type': 'string'}, 'awaiting_my_approval': {'type': 'boolean'}}, 'description': 'Filters selecting the cases when all_matching is true.'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The agent that should run on the selected cases. Must be a consumer of this queue and not belong to a different automation.'}, 'case_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 100, 'minItems': 1, 'description': 'Explicit case IDs to act on (1-100). Provide this or set all_matching.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'all_matching': {'type': 'boolean', 'description': 'When true, act on every case matching the provided filters/search instead of an explicit id list.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'priority'], 'properties': {'search': {'type': 'string', 'description': 'Free-text search selecting the cases when all_matching is true.'}, 'filters': {'type': 'object', 'properties': {'labels': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'status': {'type': 'array', 'items': {'enum': ['all', 'pending', 'processing', 'needs_input', 'postponed', 'needs_review', 'resolved', 'canceled', 'claimed', 'completed', 'failed'], 'type': 'string'}}, 'priority': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}}, 'json_data': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'created_at_to': {'type': 'string'}, 'updated_at_to': {'type': 'string'}, 'issue_severity': {'type': 'array', 'items': {'enum': ['critical', 'medium'], 'type': 'string'}}, 'created_at_from': {'type': 'string'}, 'updated_at_from': {'type': 'string'}, 'awaiting_my_approval': {'type': 'boolean'}}, 'description': 'Filters selecting the cases when all_matching is true.'}, 'case_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 100, 'minItems': 1, 'description': 'Explicit case IDs to act on (1-100). Provide this or set all_matching.'}, 'priority': {'enum': ['none', 'medium', 'high'], 'type': 'string', 'description': 'Target priority for each case. `medium`/`high` raise it above the default; `none` clears it.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'all_matching': {'type': 'boolean', 'description': 'When true, act on every case matching the provided filters/search instead of an explicit id list.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'status'], 'properties': {'search': {'type': 'string', 'description': 'Free-text search selecting the cases when all_matching is true.'}, 'status': {'enum': ['pending', 'completed', 'failed', 'canceled'], 'type': 'string', 'description': "Target status for each case. `completed`, `failed`, and `canceled` are terminal â\x80\x94 `canceled` records a deliberate human stop, distinct from a system `failed`. `pending` resets the case (the queue's trigger consumer, if any, will re-claim it). `success` is not settable: it means an evaluation passed."}, 'filters': {'type': 'object', 'properties': {'labels': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'status': {'type': 'array', 'items': {'enum': ['all', 'pending', 'processing', 'needs_input', 'postponed', 'needs_review', 'resolved', 'canceled', 'claimed', 'completed', 'failed'], 'type': 'string'}}, 'priority': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}}, 'json_data': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'created_at_to': {'type': 'string'}, 'updated_at_to': {'type': 'string'}, 'issue_severity': {'type': 'array', 'items': {'enum': ['critical', 'medium'], 'type': 'string'}}, 'created_at_from': {'type': 'string'}, 'updated_at_from': {'type': 'string'}, 'awaiting_my_approval': {'type': 'boolean'}}, 'description': 'Filters selecting the cases when all_matching is true.'}, 'case_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 100, 'minItems': 1, 'description': 'Explicit case IDs to act on (1-100). Provide this or set all_matching.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'all_matching': {'type': 'boolean', 'description': 'When true, act on every case matching the provided filters/search instead of an explicit id list.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['builder_run_id', 'status'], 'properties': {'status': {'type': 'string', 'const': 'cancelled', 'description': 'Cancel an in-progress generation; review-pending changes must be declined instead.'}, 'builder_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The builder run identifier.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mcp_server_url'], 'properties': {'mcp_server_url': {'type': 'string', 'format': 'uri', 'description': 'URL of the MCP server to probe for OAuth support.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'capture_id', 'file_name', 'content_type'], 'properties': {'file_name': {'type': 'string', 'pattern': '^.*\\.(?:[sS][vV][gG]|[xX][mM][lL]|[pP][nN][gG]|[jJ][pP][eE]?[gG])$', 'minLength': 1, 'description': 'Name of the Miro export file. Supported extensions: .svg, .xml, .png, .jpg, .jpeg'}, 'capture_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The pending capture id returned by the upload-url endpoint'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'content_type': {'enum': ['image/svg+xml', 'application/xml', 'text/xml', 'image/png', 'image/jpeg'], 'type': 'string', 'description': 'MIME type of the uploaded Miro export file'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'captureId', 'fileName'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the uploaded document file'}, 'captureId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The capture ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'captureId', 'fileName'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the uploaded image file'}, 'captureId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The capture ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'interviewId', 'fileName'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the uploaded document file'}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['interviewId', 'fileName'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the uploaded document file'}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The team interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'captureId', 'fileName'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the uploaded video file'}, 'captureId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The capture ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifact_id', 'queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Current Pulse artifact ID, supplied by the builder or viewer context.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The suggestion's unique identifier"}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'create_new_draft': {'type': 'boolean'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Human-readable agent name'}, 'type': {'enum': ['agent', 'code'], 'type': 'string', 'default': 'agent', 'description': 'Flavour of the step to create. Fixed at creation â\x80\x94 it selects the config family every build of this step must use, and the two cannot be mixed.'}, 'build': {'type': 'object', 'required': ['name', 'config'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Build name'}, 'config': {'type': 'object', 'required': ['version', 'data'], 'properties': {'data': {'type': 'object', 'required': ['models', 'input'], 'properties': {'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'Team files that should be available to the agent, each given as the relative file path returned in the `path` field of `GET /v2/teams/{teamId}/files` (for example `report.md` or `folder/doc.md`) â\x80\x94 not the `id` field, which is a GCS object identifier.'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'content'], 'properties': {'role': {'enum': ['system', 'user', 'assistant'], 'type': 'string'}, 'type': {'anyOf': [{'type': 'string', 'const': 'message'}, {'type': 'null'}]}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string'}, 'type': {'type': 'string', 'const': 'input_text'}}}, {'type': 'object', 'required': ['type'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'type': {'type': 'string', 'const': 'input_image'}, 'detail': {'anyOf': [{'enum': ['low', 'high', 'auto'], 'type': 'string'}, {'type': 'null'}]}, 'file_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, {'type': 'object', 'required': ['type', 'file_id'], 'properties': {'type': {'type': 'string', 'const': 'input_file'}, 'file_id': {'type': 'string'}}}]}}]}}}}], 'description': 'Initial agent instructions â\x80\x94 either a single system prompt string or a list of structured messages'}, 'models': {'type': 'object', 'required': ['agent', 'browsing'], 'properties': {'agent': {'type': 'object', 'required': ['model'], 'properties': {'model': {'enum': ['claude-haiku-4-5-20251001', 'claude-sonnet-5', 'claude-sonnet-5[1m]', 'claude-sonnet-5-5', 'claude-sonnet-5-5[1m]', 'claude-opus-5', 'claude-opus-5[1m]', 'kimi-k3', 'kimi-k3-duvo', 'glm-5.3-flash', 'deepseek-v4-flash', 'minimax-m3', 'qwen3.6-27b', 'd1-max', 'duvo-1-max', 'duvo-1-max-sonnet-1m', 'duvo-1-max-sonnet-4.5', 'duvo-1-max-sonnet-4.5-1m', 'duvo-1-max-opus', 'duvo-1-max-opus-4.5', 'gpt-4.1', 'gpt-4o', 'gpt-4o-mini', 'gpt-5', 'gpt-5.1', 'claude-sonnet-4-20250514', 'claude-sonnet-4-20250514[1m]', 'claude-sonnet-4-5-20250929', 'claude-sonnet-4-5-20250929[1m]', 'claude-sonnet-4-6', 'claude-sonnet-4-6[1m]', 'claude-opus-4-1-20250805', 'claude-opus-4-5-20251101', 'claude-opus-4-6', 'claude-opus-4-6[1m]', 'claude-opus-4-7', 'claude-opus-4-7[1m]', 'claude-opus-4-8', 'claude-opus-4-8[1m]', 'glm-5.2'], 'type': 'string', 'description': "Model identifier used for the primary agent loop (Claude, or an OSS model when the team's oss_models flag â\x80\x94 or oss_models_public for the public subset â\x80\x94 is enabled)", 'x-extensible-enum': ['claude-haiku-4-5-20251001', 'claude-sonnet-5', 'claude-sonnet-5[1m]', 'claude-sonnet-5-5', 'claude-sonnet-5-5[1m]', 'claude-opus-5', 'claude-opus-5[1m]', 'kimi-k3', 'kimi-k3-duvo', 'glm-5.3-flash', 'deepseek-v4-flash', 'minimax-m3', 'qwen3.6-27b', 'd1-max', 'duvo-1-max', 'duvo-1-max-sonnet-1m', 'duvo-1-max-sonnet-4.5', 'duvo-1-max-sonnet-4.5-1m', 'duvo-1-max-opus', 'duvo-1-max-opus-4.5', 'gpt-4.1', 'gpt-4o', 'gpt-4o-mini', 'gpt-5', 'gpt-5.1', 'claude-sonnet-4-20250514', 'claude-sonnet-4-20250514[1m]', 'claude-sonnet-4-5-20250929', 'claude-sonnet-4-5-20250929[1m]', 'claude-sonnet-4-6', 'claude-sonnet-4-6[1m]', 'claude-opus-4-1-20250805', 'claude-opus-4-5-20251101', 'claude-opus-4-6', 'claude-opus-4-6[1m]', 'claude-opus-4-7', 'claude-opus-4-7[1m]', 'claude-opus-4-8', 'claude-opus-4-8[1m]', 'glm-5.2']}}, 'description': 'Primary agent model configuration'}, 'browsing': {'type': 'object', 'required': ['provider', 'model'], 'properties': {'model': {'enum': ['gemini-2.5-pro', 'gemini-2.5-flash', 'gemini-3-pro-preview', 'claude-haiku-4-5', 'claude-sonnet-4-5', 'claude-opus-4-1'], 'type': 'string', 'description': 'Model identifier for the browsing provider'}, 'provider': {'enum': ['google', 'anthropic'], 'type': 'string', 'description': 'Provider backing the browsing/computer-use model'}}, 'description': 'Browsing/computer-use model configuration'}}, 'description': 'Model configuration for each capability the agent uses'}, 'skills': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'IDs of skills (team or system) that should be available to the agent'}, 'options': {'type': 'object', 'properties': {'supervisedMode': {'type': 'boolean', 'description': "Run the agent under Duvo's permission classifier: every tool call is classified as allow/deny/ask, with 'ask' routed to human-in-the-loop approval. Mutually exclusive with browsing and computer-use connections."}, 'browserProvider': {'enum': ['browserbase', 'browser-use'], 'type': 'string', 'description': 'Browser infrastructure provider'}, 'evaluationSchemaId': {'type': 'string', 'description': 'ID of the evaluation schema to apply to runs of this agent'}, 'benchmarkExpectedOutcomes': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'criteria'], 'properties': {'criteria': {'type': 'string', 'description': 'Pass/fail criteria used to evaluate the outcome'}, 'description': {'type': 'string', 'description': 'Human-readable description of the expected outcome'}}}, 'description': 'Expected outcomes used when running benchmark scenarios'}}, 'description': 'Optional runtime options controlling how the agent executes', 'additionalProperties': {}}, 'plugins': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'Plugins to load â\x80\x94 either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo")'}, 'subAgents': {'anyOf': [{'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, {'type': 'null'}], 'default': [], 'description': 'Retired â\x80\x94 Sub-Assignments was removed. Accepted for backwards compatibility and ignored.'}}, 'description': 'Agent configuration payload'}, 'version': {'type': 'string', 'const': 'v2', 'description': 'Schema version discriminator â\x80\x94 must be "v2" for the current schema'}}, 'description': "Build configuration (latest schema version only; legacy v1 configs are not accepted). Agent steps only â\x80\x94 a code step's first build is created via `POST /v2/agents/{agent_id}/revisions`, which accepts a code-step config."}}, 'description': 'Optional inline build. When present, a first build is created alongside the agent. Only valid for an agent step.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'thread_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Existing thread ID to associate with the agent'}, 'automation_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Automation this agent belongs to. If omitted on a team using the automations model, a new automation named after the agent is created automatically.'}, 'source_build_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Build ID whose case-queue-consumer setup should be copied to the new agent'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'case_queue_id', 'enabled'], 'properties': {'enabled': {'type': 'boolean', 'description': 'Whether the trigger is active. Disabled triggers do not dispatch runs.'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'concurrency': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'null'}], 'description': "Concurrency cap for the target queue. The cap is queue-wide, so this affects every Agent working the queue, not just this trigger. Only 1 (run cases one at a time) or null (reset the whole queue's cap to the platform default) can be set here; higher caps are configured per-queue via PATCH /v2/admin/case-queues/{queueId}/concurrency. Omit to leave the queue's current cap unchanged."}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Queue whose new cases should trigger this agent'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Human-readable folder name'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'parent_folder_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Parent folder ID for nested folders. Omit or null to create at the root level.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'trigger_type', 'channel_id', 'channel_name', 'match_rule'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'channel_id': {'type': 'string', 'minLength': 1, 'description': 'Slack channel ID to watch, e.g. `C0123ABCD`.'}, 'is_private': {'type': 'boolean', 'description': 'Whether the channel is private. Defaults to false. Private channels require the Duvo Slack app to be invited to the channel.'}, 'match_rule': {'oneOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'all'}}, 'description': 'Fire on every message posted in the channel.'}, {'type': 'object', 'required': ['kind', 'values'], 'properties': {'kind': {'type': 'string', 'const': 'contains'}, 'values': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'Case-insensitive keywords; a message fires the trigger when it contains any of them. Duplicates are deduplicated.'}}, 'description': 'Fire only on messages containing one of the keywords.'}], 'description': 'Which channel messages fire the trigger: `{"kind":"all"}` for every message, or `{"kind":"contains","values":["invoice"]}` to match keywords.'}, 'channel_name': {'type': 'string', 'minLength': 1, 'description': 'Slack channel name shown in Duvo, without the leading `#`, e.g. `support-inbox`.'}, 'trigger_type': {'type': 'string', 'const': 'slack_channel_message', 'description': 'Trigger type. Only `slack_channel_message` (a message posted in a Slack channel) is supported here.'}, 'slack_team_id': {'type': 'string', 'minLength': 1, 'description': "Slack workspace (team) ID the channel belongs to, e.g. `T0123ABCD`. Defaults to the team's default installed workspace. Discover the workspaces an agent can use with the bound-workspaces endpoint."}, 'integration_instance_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Specific bound Slack connection to run the trigger off. Omit to use your own connection, or pass one returned by the bound-workspaces endpoint.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Human-readable automation name.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Optional draft name'}, 'description': {'type': 'string', 'maxLength': 2000, 'description': 'Optional draft description'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}, 'base_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision to branch from (defaults to the active revision)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id', 'filename', 'mime_type', 'size_bytes'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'mime_type': {'type': 'string', 'maxLength': 127, 'minLength': 1}, 'size_bytes': {'type': 'integer', 'maximum': 52428800, 'exclusiveMinimum': 0}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'title', 'description'], 'properties': {'title': {'type': 'string', 'maxLength': 80, 'minLength': 3, 'description': 'Short, human-readable Pass/Fail rubric title.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'description': {'type': 'string', 'maxLength': 400, 'minLength': 20, 'description': 'A 1-2 sentence Pass condition phrased as a question.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'case': {'type': 'object', 'required': ['title'], 'properties': {'data': {'type': 'string', 'description': 'Additional data for the case. Free-form text or JSON; Agents receive this on claim.'}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Short title for the case (max 500 characters). Put long context in `data`.'}, 'labels': {'type': 'array', 'items': {'type': 'object', 'required': ['value'], 'properties': {'key': {'type': 'string', 'default': '', 'description': 'Label key (omit for a simple tag).'}, 'value': {'type': 'string', 'minLength': 1, 'description': 'Label value (required).'}}}, 'maxItems': 50, 'description': "Optional labels to assign to the case at creation. Labels are created on the queue if they don't already exist."}, 'priority': {'enum': ['none', 'medium', 'high'], 'type': 'string', 'description': 'Case priority. `medium` or `high` raise the case above the default in the queue; omit (or `none`) for normal priority. Only set this when the AOP or the user explicitly instructs prioritization â\x80\x94 do not infer it on your own.'}, 'json_data': {'type': 'object', 'description': 'Structured payload for a queue that has a Case schema. Validated against that schema and mutually exclusive with `data` â\x80\x94 send this instead of free-text `data` on a schema-guarded queue. Within one request, either every case is structured or every case is free-text.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}, 'cases': {'type': 'array', 'items': {'type': 'object', 'required': ['title'], 'properties': {'data': {'type': 'string', 'description': 'Additional data for the case. Free-form text or JSON; Agents receive this on claim.'}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Short title for the case (max 500 characters). Put long context in `data`.'}, 'labels': {'type': 'array', 'items': {'type': 'object', 'required': ['value'], 'properties': {'key': {'type': 'string', 'default': '', 'description': 'Label key (omit for a simple tag).'}, 'value': {'type': 'string', 'minLength': 1, 'description': 'Label value (required).'}}}, 'maxItems': 50, 'description': "Optional labels to assign to the case at creation. Labels are created on the queue if they don't already exist."}, 'priority': {'enum': ['none', 'medium', 'high'], 'type': 'string', 'description': 'Case priority. `medium` or `high` raise the case above the default in the queue; omit (or `none`) for normal priority. Only set this when the AOP or the user explicitly instructs prioritization â\x80\x94 do not infer it on your own.'}, 'json_data': {'type': 'object', 'description': 'Structured payload for a queue that has a Case schema. Validated against that schema and mutually exclusive with `data` â\x80\x94 send this instead of free-text `data` on a schema-guarded queue. Within one request, either every case is structured or every case is free-text.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}, 'maxItems': 100, 'minItems': 1}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'file_name', 'content_type'], 'properties': {'file_name': {'type': 'string', 'pattern': '^.*\\.(?:[sS][vV][gG]|[xX][mM][lL]|[pP][nN][gG]|[jJ][pP][eE]?[gG])$', 'minLength': 1, 'description': 'Name of the Miro export file. Supported extensions: .svg, .xml, .png, .jpg, .jpeg'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'content_type': {'enum': ['image/svg+xml', 'application/xml', 'text/xml', 'image/png', 'image/jpeg'], 'type': 'string', 'description': 'MIME type of the Miro export file'}, 'extra_capture_request_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Optional extra-capture-request id to bind this import to'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'fileName', 'contentType'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the document file'}, 'contentType': {'enum': ['application/pdf', 'text/plain', 'text/markdown', 'application/xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'text/csv', 'application/vnd.ms-excel'], 'type': 'string', 'description': 'MIME type of the document'}, 'extraCaptureRequestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Extra-capture-request id to bind this capture to'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Name of the folder to create.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'content'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'content': {'type': 'string', 'maxLength': 5000, 'minLength': 1, 'description': 'Automation guidance to add to the process.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'fileName', 'contentType'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the image file'}, 'contentType': {'enum': ['image/png', 'image/jpeg', 'image/webp', 'image/svg+xml'], 'type': 'string', 'description': 'MIME type of the image'}, 'extraCaptureRequestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Extra-capture-request id to bind this capture to'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id'], 'properties': {'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'parentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'default': None}, 'ownerLabel': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'default': None}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'default': None, 'description': "One or two sentences saying what family of work this area groups. Persisted as the area's summary."}, 'creationMode': {'enum': ['active', 'proposal'], 'type': 'string', 'description': 'Use "proposal" to add an area for review instead of asserting it exists. A proposal is idempotent: an equivalent live area under the same parent is returned untouched rather than duplicated. Defaults to "active" â\x80\x94 except in a landscape-onboarding chat, which may only propose, and so defaults to "proposal".'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'fileName', 'contentType'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the document file'}, 'contentType': {'enum': ['application/pdf', 'text/plain', 'text/markdown', 'application/xml'], 'type': 'string', 'description': 'MIME type of the document'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Optional process name; server default applies when omitted'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'value'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'value': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'colorHue': {'type': 'integer', 'default': 215, 'maximum': 360, 'minimum': 0}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'source_node_id', 'target_node_id', 'type'], 'properties': {'type': {'enum': ['hands_off_to', 'shares_step_with', 'variant_of'], 'type': 'string', 'description': 'Relationship type between the source process node and target process node'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'state': {'enum': ['suggested', 'confirmed'], 'type': 'string', 'default': 'confirmed', 'description': 'Whether the link is suggested by Duvo or confirmed by a user'}, 'confidence': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional confidence score from 0 to 1'}, 'source_node_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Hierarchy node id for the source process'}, 'target_node_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Hierarchy node id for the target process'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'processId', 'parentId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'parentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The area folder the process is filed under.'}, 'processId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'An existing Clarity process to file into the landscape. Unsorted processes are listed as `unlinkedProcesses` by getClarityProcessLandscape.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fileName', 'contentType'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the document file'}, 'contentType': {'enum': ['application/pdf', 'text/plain', 'text/markdown', 'application/xml'], 'type': 'string', 'description': 'MIME type of the document'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'fileName', 'contentType'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the video file'}, 'contentType': {'enum': ['video/mp4', 'video/mov', 'video/webm', 'video/mpeg', 'video/mpg', 'video/avi', 'video/x-flv', 'video/wmv', 'video/3gpp'], 'type': 'string', 'description': 'MIME type of the video'}, 'extraCaptureRequestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Extra-capture-request id to bind this capture to'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'provider', 'auth_method'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'type': {'type': 'string', 'default': 'custom_mcp'}, 'headers': {'type': 'object', 'properties': {'secret': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'plaintext': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'provider': {'type': 'string', 'const': 'user'}, 'server_url': {'type': 'string', 'format': 'uri'}, 'auth_method': {'enum': ['url', 'apikey', 'headers', 'oauth'], 'type': 'string'}, 'custom_integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['userId', 'domain'], 'properties': {'domain': {'type': 'string', 'minLength': 1}, 'shared': {'type': 'boolean'}, 'userId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'password': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}, 'username': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}, 'otp_secret': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'auth_method', 'server_url'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'server_url': {'type': 'string', 'format': 'uri'}, 'auth_method': {'enum': ['url', 'apikey', 'headers', 'oauth'], 'type': 'string'}, 'oauth_client_id': {'type': 'string', 'minLength': 1}, 'oauth_client_secret': {'type': 'string', 'minLength': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'title', 'description'], 'properties': {'title': {'type': 'string', 'maxLength': 80, 'minLength': 3, 'description': 'Short, human-readable Pass/Fail rubric title.'}, 'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Assignment ID)"}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Add the rubric to this build (revision). Defaults to the agent's live build when omitted."}, 'description': {'type': 'string', 'maxLength': 400, 'minLength': 20, 'description': 'A 1-2 sentence Pass condition phrased as a question.'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fileName', 'contentType'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'fileName': {'type': 'string', 'minLength': 1, 'description': 'Name of the file to upload'}, 'contentType': {'type': 'string', 'minLength': 1, 'description': 'MIME type of the file'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Organization ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message'], 'properties': {'message': {'type': 'string', 'maxLength': 15000, 'minLength': 1}, 'permission': {'enum': ['view', 'edit'], 'type': 'string'}, 'visibility': {'enum': ['private', 'team'], 'type': 'string'}, 'connection_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 10}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'filename', 'mime_type', 'size_bytes'], 'properties': {'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Name of the file being attached, without any path segments'}, 'mime_type': {'type': 'string', 'maxLength': 127, 'minLength': 1, 'description': 'MIME type of the file, e.g. text/html or image/png'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'size_bytes': {'type': 'integer', 'maximum': 26214400, 'minimum': 0, 'description': 'Size of the file in bytes (max 25MB)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'element': {'type': 'object', 'required': ['selector', 'label', 'tag_name', 'outer_html'], 'properties': {'text': {'type': 'string', 'maxLength': 500}, 'label': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'point': {'type': 'object', 'required': ['x_ratio', 'y_ratio'], 'properties': {'x_ratio': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'y_ratio': {'type': 'number', 'maximum': 1, 'minimum': 0}}}, 'selector': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'tag_name': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'outer_html': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'openui_node': {'type': 'object', 'required': ['statement', 'component'], 'properties': {'source': {'type': 'string', 'maxLength': 2000}, 'component': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'statement': {'type': 'string', 'maxLength': 200, 'minLength': 1}}}}}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'commentId', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'commentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Queue name. A standalone queue must be uniquely named within the team. A queue created inside an automation instead has to be uniquely named within a revision, which is checked when that revision is activated.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'folder_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Optional folder to nest the queue under.'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional human-readable description.'}, 'automation_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Automation this queue belongs to. Optional for teams not yet migrated to Automations; required once a team has migrated.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'definition'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'definition': {'type': 'object', 'required': ['name', 'measures'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'order': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'direction'], 'properties': {'field': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'direction': {'enum': ['asc', 'desc'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 8}, 'filters': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'measures': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'operation'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'operation': {'enum': ['count', 'sum', 'avg', 'min', 'max', 'count_distinct', 'p50', 'p90', 'p95', 'p99'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1}, 'dimensions': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'path'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}}, 'additionalProperties': False}, 'maxItems': 4}, 'caseFilters': {'type': 'object', 'properties': {'labelIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 100, 'minItems': 1}, 'statuses': {'type': 'array', 'items': {'enum': ['pending', 'in_progress', 'needs_input', 'postponed', 'evaluating', 'success', 'issues', 'completed', 'failed', 'canceled'], 'type': 'string'}, 'maxItems': 10, 'minItems': 1}, 'priorities': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1}, 'createdAtTo': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'createdAtFrom': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}}, 'additionalProperties': False}, 'timeDimension': {'type': 'object', 'required': ['name', 'path', 'granularity'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'granularity': {'enum': ['hour', 'day', 'week', 'month', 'quarter', 'year'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maximum_stale_age_seconds': {'type': 'integer', 'maximum': 604800, 'minimum': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'name', 'schema'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'schema': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'value'], 'properties': {'key': {'type': 'string', 'default': ''}, 'value': {'type': 'string', 'minLength': 1}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'color_hue': {'type': 'integer', 'maximum': 360, 'minimum': 0}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Build name'}, 'config': {'anyOf': [{'type': 'object', 'required': ['version', 'data'], 'properties': {'data': {'type': 'object', 'required': ['models', 'input'], 'properties': {'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'Team files that should be available to the agent, each given as the relative file path returned in the `path` field of `GET /v2/teams/{teamId}/files` (for example `report.md` or `folder/doc.md`) â\x80\x94 not the `id` field, which is a GCS object identifier.'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'content'], 'properties': {'role': {'enum': ['system', 'user', 'assistant'], 'type': 'string'}, 'type': {'anyOf': [{'type': 'string', 'const': 'message'}, {'type': 'null'}]}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string'}, 'type': {'type': 'string', 'const': 'input_text'}}}, {'type': 'object', 'required': ['type'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'type': {'type': 'string', 'const': 'input_image'}, 'detail': {'anyOf': [{'enum': ['low', 'high', 'auto'], 'type': 'string'}, {'type': 'null'}]}, 'file_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, {'type': 'object', 'required': ['type', 'file_id'], 'properties': {'type': {'type': 'string', 'const': 'input_file'}, 'file_id': {'type': 'string'}}}]}}]}}}}], 'description': 'Initial agent instructions â\x80\x94 either a single system prompt string or a list of structured messages'}, 'models': {'type': 'object', 'required': ['agent', 'browsing'], 'properties': {'agent': {'type': 'object', 'required': ['model'], 'properties': {'model': {'enum': ['claude-haiku-4-5-20251001', 'claude-sonnet-5', 'claude-sonnet-5[1m]', 'claude-sonnet-5-5', 'claude-sonnet-5-5[1m]', 'claude-opus-5', 'claude-opus-5[1m]', 'kimi-k3', 'kimi-k3-duvo', 'glm-5.3-flash', 'deepseek-v4-flash', 'minimax-m3', 'qwen3.6-27b', 'd1-max', 'duvo-1-max', 'duvo-1-max-sonnet-1m', 'duvo-1-max-sonnet-4.5', 'duvo-1-max-sonnet-4.5-1m', 'duvo-1-max-opus', 'duvo-1-max-opus-4.5', 'gpt-4.1', 'gpt-4o', 'gpt-4o-mini', 'gpt-5', 'gpt-5.1', 'claude-sonnet-4-20250514', 'claude-sonnet-4-20250514[1m]', 'claude-sonnet-4-5-20250929', 'claude-sonnet-4-5-20250929[1m]', 'claude-sonnet-4-6', 'claude-sonnet-4-6[1m]', 'claude-opus-4-1-20250805', 'claude-opus-4-5-20251101', 'claude-opus-4-6', 'claude-opus-4-6[1m]', 'claude-opus-4-7', 'claude-opus-4-7[1m]', 'claude-opus-4-8', 'claude-opus-4-8[1m]', 'glm-5.2'], 'type': 'string', 'description': "Model identifier used for the primary agent loop (Claude, or an OSS model when the team's oss_models flag â\x80\x94 or oss_models_public for the public subset â\x80\x94 is enabled)", 'x-extensible-enum': ['claude-haiku-4-5-20251001', 'claude-sonnet-5', 'claude-sonnet-5[1m]', 'claude-sonnet-5-5', 'claude-sonnet-5-5[1m]', 'claude-opus-5', 'claude-opus-5[1m]', 'kimi-k3', 'kimi-k3-duvo', 'glm-5.3-flash', 'deepseek-v4-flash', 'minimax-m3', 'qwen3.6-27b', 'd1-max', 'duvo-1-max', 'duvo-1-max-sonnet-1m', 'duvo-1-max-sonnet-4.5', 'duvo-1-max-sonnet-4.5-1m', 'duvo-1-max-opus', 'duvo-1-max-opus-4.5', 'gpt-4.1', 'gpt-4o', 'gpt-4o-mini', 'gpt-5', 'gpt-5.1', 'claude-sonnet-4-20250514', 'claude-sonnet-4-20250514[1m]', 'claude-sonnet-4-5-20250929', 'claude-sonnet-4-5-20250929[1m]', 'claude-sonnet-4-6', 'claude-sonnet-4-6[1m]', 'claude-opus-4-1-20250805', 'claude-opus-4-5-20251101', 'claude-opus-4-6', 'claude-opus-4-6[1m]', 'claude-opus-4-7', 'claude-opus-4-7[1m]', 'claude-opus-4-8', 'claude-opus-4-8[1m]', 'glm-5.2']}}, 'description': 'Primary agent model configuration'}, 'browsing': {'type': 'object', 'required': ['provider', 'model'], 'properties': {'model': {'enum': ['gemini-2.5-pro', 'gemini-2.5-flash', 'gemini-3-pro-preview', 'claude-haiku-4-5', 'claude-sonnet-4-5', 'claude-opus-4-1'], 'type': 'string', 'description': 'Model identifier for the browsing provider'}, 'provider': {'enum': ['google', 'anthropic'], 'type': 'string', 'description': 'Provider backing the browsing/computer-use model'}}, 'description': 'Browsing/computer-use model configuration'}}, 'description': 'Model configuration for each capability the agent uses'}, 'skills': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'IDs of skills (team or system) that should be available to the agent'}, 'options': {'type': 'object', 'properties': {'supervisedMode': {'type': 'boolean', 'description': "Run the agent under Duvo's permission classifier: every tool call is classified as allow/deny/ask, with 'ask' routed to human-in-the-loop approval. Mutually exclusive with browsing and computer-use connections."}, 'browserProvider': {'enum': ['browserbase', 'browser-use'], 'type': 'string', 'description': 'Browser infrastructure provider'}, 'evaluationSchemaId': {'type': 'string', 'description': 'ID of the evaluation schema to apply to runs of this agent'}, 'benchmarkExpectedOutcomes': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'criteria'], 'properties': {'criteria': {'type': 'string', 'description': 'Pass/fail criteria used to evaluate the outcome'}, 'description': {'type': 'string', 'description': 'Human-readable description of the expected outcome'}}}, 'description': 'Expected outcomes used when running benchmark scenarios'}}, 'description': 'Optional runtime options controlling how the agent executes', 'additionalProperties': {}}, 'plugins': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'Plugins to load â\x80\x94 either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo")'}, 'subAgents': {'anyOf': [{'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, {'type': 'null'}], 'default': [], 'description': 'Retired â\x80\x94 Sub-Assignments was removed. Accepted for backwards compatibility and ignored.'}}, 'description': 'Agent configuration payload'}, 'version': {'type': 'string', 'const': 'v2', 'description': 'Schema version discriminator â\x80\x94 must be "v2" for the current schema'}}}, {'type': 'object', 'required': ['version', 'data'], 'properties': {'data': {'type': 'object', 'required': ['language', 'source'], 'properties': {'files': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': [], 'description': 'Team file paths this step can read at run time'}, 'source': {'oneOf': [{'type': 'object', 'required': ['kind', 'code'], 'properties': {'code': {'type': 'string', 'minLength': 1, 'description': 'Program held in the build config. Written to `main.py` and run with `python main.py`.'}, 'kind': {'type': 'string', 'const': 'inline'}}}, {'type': 'object', 'required': ['kind', 'startCommand'], 'properties': {'kind': {'type': 'string', 'const': 'files'}, 'bundle': {'type': 'object', 'required': ['bucket', 'files'], 'properties': {'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'sha256', 'sizeBytes'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Path the file is materialised at, relative to the work dir'}, 'sha256': {'type': 'string', 'pattern': '^[0-9a-f]{64}$', 'maxLength': 64, 'minLength': 64, 'description': "Digest of the file's bytes, and the key its blob is stored at"}, 'sizeBytes': {'type': 'integer', 'maximum': 131072, 'minimum': 0, 'description': "UTF-8 byte length of the file's contents"}}}, 'maxItems': 200, 'description': "The program's files, one manifest entry each"}, 'bucket': {'type': 'string', 'minLength': 1, 'description': "GCS bucket the bundle's blobs are stored in"}}, 'description': "The program's files, as a content-addressed manifest"}, 'startCommand': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Command run from the root of the step\'s file system, e.g. "python main.py".'}}}], 'description': "Where the step's program comes from"}, 'language': {'enum': ['python'], 'type': 'string', 'description': "Language the step's program is written in"}, 'timeoutMs': {'type': 'integer', 'default': 600000, 'maximum': 3600000, 'description': 'Wall-clock budget for one execution of the step', 'exclusiveMinimum': 0}, 'handoverRequired': {'type': 'boolean', 'default': False, 'description': 'When the step declares handover options, whether a run that exits cleanly without requesting one fails. Ignored when the step declares no options.'}}, 'description': 'Code step configuration payload'}, 'version': {'type': 'string', 'const': 'v1', 'description': 'Schema version discriminator â\x80\x94 must be "v1" for the current code-step schema'}}}], 'description': "Build configuration. An agent step takes the latest agent schema (legacy v1 agent configs are not accepted); a code step takes a code-step config. Omit it to get the step family's default first build."}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'handover_to': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'The single agent or code step to run after this one completes ("Handover to"). Mutually exclusive with handover_target_ids.'}, 'source_build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Build ID to copy integrations and queue links from'}, 'handover_options': {'anyOf': [{'type': 'object', 'required': ['target_agent_ids', 'required'], 'properties': {'required': {'type': 'boolean', 'description': 'When true, a run that exits cleanly without requesting a handover fails'}, 'target_agent_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1, 'description': "Steps in the same automation this code step's program may request"}}}, {'type': 'null'}], 'description': "Code steps only. The targets the program may request, and whether it must. Null clears them; omit to inherit the source build's. Mutually exclusive with handover_to."}, 'handover_target_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'description': 'Agent IDs that this agent can hand work off to'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sandbox_id', 'path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Path where the file will be uploaded (e.g. /workspace/data.csv)'}, 'sandbox_id': {'type': 'string', 'minLength': 1, 'description': "The sandbox's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'enabled', 'frequency', 'timezone'], 'properties': {'day': {'anyOf': [{'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}, {'type': 'null'}]}, 'cron': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'time': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enabled': {'type': 'boolean'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'timezone': {'type': 'string'}, 'frequency': {'enum': ['every_5_minutes', 'every_15_minutes', 'hourly', 'daily', 'workday', 'weekly', 'monthly', 'custom'], 'type': 'string'}, 'recurring': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'day_of_month': {'anyOf': [{'type': 'integer', 'maximum': 31, 'minimum': 1}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'values'], 'properties': {'name': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'shared': {'type': 'boolean', 'default': False}, 'values': {'type': 'object', 'propertyNames': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 128, 'minLength': 1}, 'additionalProperties': {'type': 'string', 'maxLength': 65536, 'minLength': 1}}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'service_slug': {'anyOf': [{'type': 'string', 'maxLength': 64, 'minLength': 1}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'description', 'content'], 'properties': {'name': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Skill name. 1-64 lowercase alphanumeric chars and hyphens; no leading/trailing or consecutive hyphens.'}, 'content': {'type': 'string', 'description': 'Markdown body of SKILL.md without YAML frontmatter. The server prepends the frontmatter from the other fields.'}, 'license': {'type': 'string', 'description': 'Optional: license name or reference to a bundled license file.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'metadata': {'type': 'object', 'description': 'Optional: arbitrary key-value metadata.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': {'type': 'string', 'maxLength': 1024, 'minLength': 1, 'description': '1-1024 chars describing what the skill does and when to invoke it.'}, 'allowed-tools': {'type': 'string', 'description': 'Optional (experimental): space-delimited list of pre-approved tools.'}, 'compatibility': {'type': 'string', 'maxLength': 500, 'description': 'Optional: 1-500 chars describing environment requirements.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id'], 'properties': {'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}, 'source_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Revision to fork the new draft from. Defaults to the live revision (or the skill's current files if there is no live revision yet)."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['email', 'role'], 'properties': {'role': {'type': 'string', 'description': 'Team role to grant. One of: team:owner, team:superadmin, team:admin (deprecated), team:manager, team:builder, team:member, team:clarity-member. You cannot grant a role above your own. Process invitations must use team:clarity-member.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address of the person to invite.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'processId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Invite the person to this Clarity process rather than the whole team. Requires the team:clarity-member role.'}, 'process_role_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Configured Process role to assign alongside the Clarity invitation. Requires processId; the role must belong to that Process.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'frontendUrl': {'type': 'string', 'format': 'uri', 'description': "Deprecated and ignored. The link is built from the server's configured frontend URL so a caller can't choose the host in a Duvo-branded email."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The proposed node to reject.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['build_id', 'builder_run_id', 'expected_started_at'], 'properties': {'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The revision identifier.'}, 'builder_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The builder run returned by generation or status, belonging to this revision.'}, 'expected_started_at': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$'}, {'type': 'null'}], 'description': 'Copy started_at from the status being reviewed. Each prompt has its own builder run ID; stale review identities return 409.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'trigger_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'trigger_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case trigger's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['folder_id'], 'properties': {'force': {'type': 'string', 'description': "Pass 'true' to delete a folder that still contains assignments or subfolders. Any contained assignments will be moved to the root level."}, 'folder_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The folder's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'triggerId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'triggerId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The trigger to delete'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'revision_id'], 'properties': {'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['case_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id', 'attachment_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'attachment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The attachment's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'rubric_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'rubric_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case-level rubric's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'conversation_id'], 'properties': {'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The Clarity process id'}, 'conversation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The artifact-chat conversation id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'captureId'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'captureId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The capture ID to delete'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['folderId'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'folderId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Folder to delete.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId', 'interviewId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization ID'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process folder node ID'}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The folder interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'interviewId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'labelId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'labelId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'process_link_id'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'process_link_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Unique process-link identifier'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['interviewId'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The team interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['connection_id'], 'properties': {'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Connection ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['userId', 'id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'userId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['custom_integration_id'], 'properties': {'custom_integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Custom integration type ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'rubricId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Assignment ID)"}, 'rubricId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The custom rubric's unique identifier"}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': "Path of the file to delete relative to the team's storage root"}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'commentId'], 'properties': {'commentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'definition_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'definition_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The aggregation definition's identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'label_id'], 'properties': {'label_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The label's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'schedule_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'schedule_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The schedule's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id'], 'properties': {'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_revision_id'], 'properties': {'skill_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill revision ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['trigger_id'], 'properties': {'trigger_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The Slack channel trigger's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'ID of the invitation to revoke. Accepts either a team invitation or a Clarity process invitation.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'connectionId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'connectionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'buildId', 'exposedCredentialId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'buildId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'exposedCredentialId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'buildId', 'credentialId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'buildId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'credentialId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifact_id', 'queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Current Pulse artifact ID, supplied by the builder or viewer context.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nodeId', 'suggestionId'], 'properties': {'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'suggestionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nodeId', 'suggestionId'], 'properties': {'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'suggestionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The notification's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id'], 'properties': {'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The ID of the agent to duplicate'}, 'include_aop': {'type': 'boolean', 'description': "Copy the agent's operating procedure (AOP) and its handover targets. Defaults to true."}, 'include_queue': {'type': 'boolean', 'description': 'Copy the assigned Queue. Defaults to true.'}, 'include_memory': {'type': 'boolean', 'description': 'Copy what the agent has learned so far (its Memory). Defaults to false. Memory can only be copied from the Duvo app â\x80\x94 requesting it here returns an error.'}, 'include_plugins': {'type': 'boolean', 'description': 'Copy installed plugins. Defaults to true.'}, 'include_connections': {'type': 'boolean', 'description': 'Copy connected accounts (Connections) and their selected tools. Defaults to true.'}, 'include_skills_files': {'type': 'boolean', 'description': 'Copy attached Skills and Files. Defaults to true.'}, 'include_logins_secrets': {'type': 'boolean', 'description': 'Copy saved Logins and Secrets. Defaults to true.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Source Clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'definition'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'definition': {'type': 'object', 'required': ['name', 'measures'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'order': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'direction'], 'properties': {'field': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'direction': {'enum': ['asc', 'desc'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 8}, 'filters': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'measures': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'operation'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'operation': {'enum': ['count', 'sum', 'avg', 'min', 'max', 'count_distinct', 'p50', 'p90', 'p95', 'p99'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1}, 'dimensions': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'path'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}}, 'additionalProperties': False}, 'maxItems': 4}, 'caseFilters': {'type': 'object', 'properties': {'labelIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 100, 'minItems': 1}, 'statuses': {'type': 'array', 'items': {'enum': ['pending', 'in_progress', 'needs_input', 'postponed', 'evaluating', 'success', 'issues', 'completed', 'failed', 'canceled'], 'type': 'string'}, 'maxItems': 10, 'minItems': 1}, 'priorities': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1}, 'createdAtTo': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'createdAtFrom': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}}, 'additionalProperties': False}, 'timeDimension': {'type': 'object', 'required': ['name', 'path', 'granularity'], 'properties': {'name': {'type': 'string', 'pattern': '^[A-Za-z_][A-Za-z0-9_]{0,63}$'}, 'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'granularity': {'enum': ['hour', 'day', 'week', 'month', 'quarter', 'year'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'format': {'enum': ['json', 'csv'], 'type': 'string', 'default': 'json'}, 'search': {'type': 'string'}, 'filters': {'type': 'object', 'default': {}, 'properties': {'labels': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'status': {'type': 'array', 'items': {'enum': ['all', 'pending', 'processing', 'needs_input', 'postponed', 'needs_review', 'resolved', 'canceled', 'claimed', 'completed', 'failed'], 'type': 'string'}}, 'priority': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}}, 'json_data': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'created_at_to': {'type': 'string'}, 'updated_at_to': {'type': 'string'}, 'issue_severity': {'type': 'array', 'items': {'enum': ['critical', 'medium'], 'type': 'string'}}, 'created_at_from': {'type': 'string'}, 'updated_at_from': {'type': 'string'}, 'awaiting_my_approval': {'type': 'boolean'}}}, 'sort_by': {'enum': ['created_at', 'updated_at', 'postponed_to'], 'type': 'string', 'default': 'created_at'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'asc'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'theme': {'enum': ['light', 'dark'], 'type': 'string', 'default': 'light'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id', 'attachment_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'attachment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The attachment's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'interviewId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'custom_guidance': {'type': 'string', 'maxLength': 2000, 'description': 'Automation proposals only: optional freeform guidance for this generation. Used as high-priority design guidance, not source-of-truth evidence.'}, 'regenerate_from': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Automation proposals only: id of a prior proposal snapshot to refine. When supplied, runs the regenerate pipeline using that proposal's current-process snapshot as the anchor and the extra captures collected since."}, 'source_snapshot_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation proposals only: id of the current-process snapshot to anchor the new proposal to. Defaults to the latest snapshot for the process.'}, 'transformation_aggressiveness': {'enum': ['none', 'conservative', 'aggressive', 'optimize'], 'type': 'string', 'default': 'aggressive', 'description': 'Transformation proposals only: the transformation appetite. `aggressive`, `conservative`, and `none` redesign around Duvo automation with decreasing freedom to change the process; `optimize` standardizes and streamlines the process while every step stays performed by people.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['build_id', 'prompt'], 'properties': {'prompt': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Instructions for generating or refining this agent or code step.'}, 'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Optional run ID for context'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Source revision to generate or refine.'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Optional process ID for context'}, 'conversation': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'message'], 'properties': {'source': {'enum': ['ai', 'user'], 'type': 'string'}, 'message': {'type': 'string'}}}, 'description': 'Optional voice conversation transcript'}, 'insight_index': {'type': 'number', 'minimum': 0, 'description': 'Optional insight index for context'}, 'previous_build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Previous build ID for sandbox reuse'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'trigger_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'trigger_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case trigger's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Relative path to the memory file, e.g. notes.md or context/customer.md'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The suggestion's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_ids'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'queue_ids': {'type': 'string', 'minLength': 1, 'description': 'Comma-separated Queue IDs to aggregate. Include 1 to 100 IDs from the team in the URL.'}, 'created_at_to': {'type': 'string', 'description': 'Exclusive case creation upper bound. Use an ISO 8601 timestamp or a relative duration such as 7d or 12h. Omit it for no upper bound.'}, 'created_at_from': {'type': 'string', 'description': 'Inclusive case creation lower bound. Use an ISO 8601 timestamp or a relative duration such as 7d or 12h. Omit it for no lower bound.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['builder_run_id'], 'properties': {'builder_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The builder run identifier.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['case_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id', 'attachment_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'disposition': {'enum': ['inline', 'attachment'], 'type': 'string', 'default': 'attachment'}, 'attachment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The attachment's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'conversation_id'], 'properties': {'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The Clarity process id'}, 'conversation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The artifact-chat conversation id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'capture_id'], 'properties': {'capture_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The capture id'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'rootId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return rosters for nodes in the subtree under this node'}, 'search': {'type': 'string', 'maxLength': 200, 'description': 'Only return rows whose person name or email contains this text, case-insensitively'}, 'userId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return rows for this platform user, matched on the same resolved identity the roster reports (an email-only row resolves through its organization profile)'}, 'ownerTeamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return rosters for processes owned by this team. 404s when the team has no readable Process Landscape'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'interviewId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id'], 'properties': {'captures': {'enum': ['full', 'lite'], 'type': 'string', 'default': 'full', 'description': "Capture payload mode. `full` (default) embeds each capture's transcript content. `lite` omits `transcript`/`videoTranscript` (returned as null) and relies on the `hasTranscript`/`hasVideoTranscript` flags; fetch content on demand via `GET .../captures/:capture_id`."}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token'], 'properties': {'token': {'type': 'string'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'rootId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'teamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Clarity process ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind', 'snapshot_id'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'snapshot_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Snapshot id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'rootId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'ownerTeamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return process nodes owned by this team, plus the folder nodes that carry them. 404s when the team has no readable Process Landscape'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['connection_id'], 'properties': {'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Connection ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['connection_id'], 'properties': {'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Connection ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['userId', 'id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'userId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Assignment ID)"}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Return rubrics for this specific build (the revision a Run ran against). Defaults to the agent's live build when omitted."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'since'], 'properties': {'scope': {'enum': ['all', 'custom'], 'type': 'string', 'description': "When 'custom', only counts Jobs scored against the target revision's custom rubrics, and only `custom__*` rubric flags. Defaults to 'all' (platform + custom rubrics)."}, 'since': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'ISO 8601 timestamp; only Jobs evaluated after this are counted'}, 'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Assignment ID)"}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Target a specific Assignment revision instead of the live revision. Only honoured when scope='custom' â\x80\x94 non-custom scopes aggregate across all revisions. Defaults to the live revision when omitted."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': "Path of the file relative to the team's storage root"}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': "Path of the file relative to the team's storage root"}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The notification's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The notification batch's unique identifier"}, 'type': {'enum': ['connection_broken', 'case_failed', 'critical_case_issue', 'case_issue', 'critical_eval_issue', 'eval_issue', 'job_issue', 'job_done', 'background_job', 'schedule_issue', 'config_proposal'], 'type': 'string', 'description': 'Count only live members of this type. Omit to count every live member.'}, 'agents': {'type': 'string', 'const': 'mine', 'description': "When 'mine', 404 unless the batch's agent is one the authenticated user created. Pass it alongside the feed's My agents filter so a retained batch cannot come back narrowed on type and severity but not on ownership."}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'severity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': 'Count only live members with exactly this severity. Mutually exclusive with minSeverity. One of: info, warning, critical, success.'}, 'minSeverity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': 'Count only live members at or above this urgency. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'agents': {'type': 'string', 'const': 'mine', 'description': "When 'mine', only count notifications for agents the authenticated user created (plus connection_broken, which is always counted), so the counts match a feed filtered the same way."}, 'unread': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only count unread notifications.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'severity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': 'Only count notifications with exactly this severity, so the counts match a feed filtered the same way. Mutually exclusive with minSeverity.'}, 'important': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only count notifications pinned to Important for you: unresolved, undismissed connection_broken rows you can reconnect yourself. Use it to size the sidebar alert without paging the list.'}, 'minSeverity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': 'Only count notifications at or above this urgency, so the counts match a feed filtered the same way. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'enum': ['connection_broken', 'case_failed', 'critical_case_issue', 'case_issue', 'critical_eval_issue', 'eval_issue', 'job_issue', 'job_done', 'background_job', 'schedule_issue', 'config_proposal'], 'type': 'string', 'description': 'Only return individual notifications of this type and batches with at least one live member of it.'}, 'limit': {'type': 'integer', 'default': 30, 'maximum': 100, 'minimum': 1}, 'agents': {'type': 'string', 'const': 'mine', 'description': "When 'mine', only return notifications for agents the authenticated user created. connection_broken notifications are always returned regardless, because they are not about an agent: a broken connection is only notified to the people who can act on it or escalate it, so filtering by agent authorship would hide it from the reader it was addressed to."}, 'cursor': {'type': 'string'}, 'unread': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only return unread individual notifications and batches with at least one unread live member.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'severity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': "Only return individual notifications with exactly this severity, and batches with at least one live member of it. A batch's counts then describe only those members. Mutually exclusive with minSeverity. One of: info, warning, critical, success."}, 'minSeverity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': "Only return individual notifications at or above this urgency, and batches with at least one live member at or above it. A batch's counts and worst severity then describe only its members at or above the threshold. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The organization's unique identifier"}, 'endDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'End of the aggregation window (ISO 8601 datetime, exclusive). Defaults to now; clamped to now.'}, 'startDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Start of the aggregation window (ISO 8601 datetime). Defaults to 30 days ago; clamped to at most 365 days ago.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The organization's unique identifier"}, 'endDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'End of the aggregation window (ISO 8601 datetime). Defaults to now; clamped to now.'}, 'startDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Start of the aggregation window (ISO 8601 datetime). Defaults to 7 days ago; clamped to at most 365 days ago.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'startDate', 'endDate', 'granularity'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The organization's unique identifier"}, 'endDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'End of the chart window (ISO 8601 datetime). Clamped to now.'}, 'timezone': {'type': 'string', 'pattern': '^[A-Za-z_]+(?:\\/[A-Za-z_\\-+0-9]+){0,2}$', 'maxLength': 64, 'description': 'IANA timezone for bucket boundaries (e.g. America/New_York). Defaults to UTC.'}, 'startDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Start of the chart window (ISO 8601 datetime). Clamped to at most 365 days ago.'}, 'granularity': {'enum': ['day', 'week', 'month'], 'type': 'string', 'description': 'Bucket size: day, week, or month'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'attachmentId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'attachmentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The attachment to mint a download URL for'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'theme': {'enum': ['light', 'dark'], 'type': 'string', 'default': 'light'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'revisionId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'revisionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'definition_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'definition_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The aggregation definition's identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The build's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The run's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'runId'], 'properties': {'runId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The run's unique identifier (Run ID)"}, 'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Agent ID)"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id', 'path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Relative path to the file inside the skill, e.g. SKILL.md.'}, 'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_revision_id', 'path'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Relative path to the file inside the revision, e.g. SKILL.md.'}, 'skill_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill revision ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'frontendUrl': {'type': 'string', 'format': 'uri', 'description': "Deprecated and ignored. The link is built from the server's configured frontend URL so a caller can't choose the host in a Duvo-branded email."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'field_id'], 'properties': {'field_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The config field's unique identifier"}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The automation's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'meetingUrl'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'meetingUrl': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'extraCaptureRequestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'meetingUrl'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'title': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'meetingUrl': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'extraCaptureRequestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'email', 'role'], 'properties': {'role': {'enum': ['organization:executive', 'organization:owner', 'organization:admin', 'organization:member'], 'type': 'string'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Organization ID'}, 'teamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'sendEmail': {'type': 'boolean', 'description': 'Email the invitation to the recipient. `false` always suppresses the email. When omitted, the legacy opt-in applies instead: the email is sent only if the deprecated `frontendUrl` is present. Omit both to create the invitation without notifying anyone.'}, 'frontendUrl': {'type': 'string', 'format': 'uri', 'description': "Deprecated. Use `sendEmail` instead. Kept because its presence is the legacy opt-in for sending the invitation email; the value never sets the link host, which is always the server's configured frontend URL."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of revisions per page (1-100, default 20)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of revisions to skip'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of agents per page (1-100, default 20)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of agents to skip'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return agents belonging to this automation.'}, 'include_schedules': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': "Include the authenticated user's schedules for each agent in the response. Schedules are per-user, so this only returns schedules the current user owns."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The agent build (revision) whose bound connections to list'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 250, 'minimum': 1}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'status': {'enum': ['pending', 'history'], 'type': 'string', 'default': 'pending'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The Agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 250, 'maximum': 250, 'minimum': 1, 'description': 'Number of automations per page (1-250, default 250)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of automations to skip'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'search': {'type': 'string', 'maxLength': 100, 'minLength': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id'], 'properties': {'limit': {'type': 'integer', 'default': 1000, 'maximum': 1000, 'minimum': 1, 'description': 'Number of labels per page (1-1000, default 1000).'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['case_id', 'run_id'], 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Maximum number of qualifying messages to return. Defaults to 3, must be between 1 and 10.'}, 'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "The agent run's unique identifier"}, 'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "The case's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['case_id'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "The case's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'field': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': "Filter on a field of a typed queue's json_data, as <path>:<operator>[:<value>] (e.g. $.invoice.amount:gte:5000). Repeat the param to require several; all must match, so two comparisons on one path express a range. Operators: equals, notEquals, in, notIn, gt, gte, lt, lte, contains, isSet, isNotSet. in/notIn take a comma-separated list; isSet/isNotSet take no value. A value is typed by shape (5000 is a number, true a boolean, 00123 a string so a leading zero survives). A path the queue's Case schema does not declare is rejected rather than ignored."}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of cases per page (1-100, default 20).'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'search': {'type': 'string', 'description': 'Full-text search across case title and data.'}, 'status': {'type': 'string', 'description': 'Filter by one or more status buckets (comma-separated). Values: all, pending, processing, needs_input, postponed, needs_review, resolved, canceled. `processing` covers both a case actively being worked and one waiting on its evaluation.'}, 'sort_by': {'enum': ['created_at', 'updated_at', 'postponed_to'], 'type': 'string', 'default': 'created_at', 'description': 'Field to sort by. Default: created_at.'}, 'priority': {'type': 'string', 'description': 'Filter by one or more priority levels (comma-separated). Values: none, medium, high.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'count_only': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': 'Skip row selection and enrichment. The normal list response shape is returned with an empty row array and the matching total.'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction. Default: desc.'}, 'created_at_to': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Return only cases created before this ISO-8601 timestamp. The upper bound is exclusive.'}, 'updated_at_to': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Return only cases updated before this ISO-8601 timestamp. The upper bound is exclusive.'}, 'issue_severity': {'type': 'string', 'description': 'Filter by highest failing rubric severity (comma-separated). Values: critical, medium. Severity is a facet within the issues outcome, so it returns nothing when combined with a status bucket that excludes issues. `low` is not selectable: an all-low verdict is stored as success, so no case carries it.'}, 'created_at_from': {'type': 'string', 'description': 'Return only cases created at or after an ISO-8601 timestamp or a lookback such as 24h or 7d.'}, 'updated_at_from': {'type': 'string', 'description': 'Return only cases updated at or after an ISO-8601 timestamp or a lookback such as 24h or 7d.'}, 'awaiting_my_approval': {'enum': ['true', 'false'], 'type': 'string', 'description': "Return only cases holding an unanswered approval row assigned to you, on the case's own run. Resolved from the authenticated caller, so it names no user: an API key filters as the user who owns it, and a credential with no user behind it is rejected rather than served an empty list. Narrows within needs_input, so it returns nothing alongside a terminal status bucket."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'snapshot_kind'], 'properties': {'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The Clarity process id'}, 'snapshot_kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Artifact kind to list conversations for'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'transformation_proposal_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of results per page (1-100, default 20)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of results to skip (default 0)'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'transformation_proposal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The automation proposal id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 200, 'minimum': 1, 'description': 'Number of captures to return (1-200, default 100)'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'include_excluded': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': 'Include captures excluded from Process Landscape analysis'}, 'includeTranscripts': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': "Include full capture transcripts (large); off by default. Pass the literal string 'true' or 'false' (z.coerce.boolean treats any non-empty value, including 'false', as true)."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Number of interviews per page (1-100, default 50)'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization ID'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process folder node ID'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of interviews to skip'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'A process landscape node that is linked to a real process.'}, 'teamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'scope': {'enum': ['team', 'organization'], 'type': 'string'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Number of processes per page (1-100, default 50)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of processes to skip (default 0)'}, 'search': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Case-insensitive search across process names'}, 'status': {'enum': ['draft', 'collecting', 'generating', 'generating-current-process', 'generating-transformation-proposal', 'review', 'complete', 'generation_failed'], 'type': 'string', 'description': 'Filter by process lifecycle status'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Filter by Clarity process schema version: 1 legacy, 2 v2'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'search': {'type': 'string', 'maxLength': 100, 'minLength': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Number of links per page (1-500, default 100)'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of links to skip (default 0)'}, 'node_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return links that touch this hierarchy process node'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Clarity process ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Processes per page (1-10, default 5). Keeps the response under the MCP output cap.'}, 'detail': {'enum': ['skeleton', 'summary'], 'type': 'string', 'default': 'skeleton', 'description': 'skeleton = + per-step role/system/flow edges (default); summary = summary+SWOT+impact only (cheaper, for pure ranking).'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Processes to skip (default 0).'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'include_current_steps': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': "Include the as-is (current) step skeleton too. Default false = proposed (to-be) steps only. Pass the literal string 'true' or 'false' (z.coerce.boolean treats any non-empty value, including 'false', as true)."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'snapshot_id'], 'properties': {'size': {'enum': ['full', 'thumb'], 'type': 'string', 'default': 'full', 'description': 'full: the persisted screenshot (1920px wide). thumb: a 768px-wide copy, cheaper to download and to inspect visually; use it to check whether a frame shows the step, then fetch full for the document.'}, 'window': {'type': 'integer', 'default': 0, 'maximum': 5, 'minimum': 0, 'description': 'Number of neighbouring persisted frames to return on each side of the selected frame as `candidates` (0-5, default 0). Use to recover when the selected frame does not show the step.'}, 'step_ids': {'type': 'string', 'description': 'Optional comma-separated step ids to resolve, for example `task-a,task-b` (maximum 100). Omit to resolve every step.'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'snapshot_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The current-process snapshot id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Number of interviews per page (1-100, default 50)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of interviews to skip'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The automation's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'type': 'string'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['userId'], 'properties': {'domain': {'type': 'string', 'minLength': 1}, 'userId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'type': 'string'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sort': {'enum': ['recency', 'importance'], 'type': 'string', 'default': 'recency', 'description': 'importance orders by type importance then severity (only valid together with batchId); default recency.'}, 'type': {'enum': ['connection_broken', 'case_failed', 'critical_case_issue', 'case_issue', 'critical_eval_issue', 'eval_issue', 'job_issue', 'job_done', 'background_job', 'schedule_issue', 'config_proposal'], 'type': 'string', 'description': 'Only return notifications of this type. One of: connection_broken, case_failed, critical_case_issue, case_issue, critical_eval_issue, eval_issue, job_issue, job_done, background_job, schedule_issue, config_proposal.'}, 'limit': {'type': 'integer', 'default': 30, 'maximum': 100, 'minimum': 1, 'description': 'Number of notifications per page (1-100, default 30).'}, 'cursor': {'type': 'string', 'description': "Opaque cursor from the previous page's nextCursor. Omit for the first page."}, 'unread': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only return unread notifications.'}, 'batchId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return live members of this notification batch.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'severity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': 'Only return notifications with this severity. One of: info, warning, critical, success.'}, 'important': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only return important notifications: unresolved connection_broken rows pinned until reconnected, removed, or dismissed.'}, 'processId': {'type': 'string', 'minLength': 1, 'description': 'Only return notifications about this Clarity process.'}, 'agentRunId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return notifications about this agent run.'}, 'minSeverity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string', 'description': 'Only return notifications at or above this urgency. Least to most urgent: success < info < warning < critical. Mutually exclusive with severity.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of agents per page (1-100, default 20)'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The organization's unique identifier"}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of agents to skip'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to agents on this team'}, 'auto_disabled': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only agents whose schedule was switched off automatically (e.g. after repeated missing-connection failures); if false, only agents with no auto-disabled schedule'}, 'schedule_enabled': {'enum': ['true', 'false'], 'type': 'string', 'description': 'If true, only agents with at least one enabled schedule; if false, only agents with none (including agents that are never scheduled)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': "Number of runs per page (1-500, default 20). The cap is higher than the team runs endpoint's because this route serves bulk export: at 100 requests a minute per key, page size is what bounds how fast a month of runs can be pulled."}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The organization's unique identifier"}, 'since': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Alias of `completed_after`, kept because it is the name the public team runs endpoint ships. Prefer `completed_after`: this endpoint carries a creation and a start window too, and only the column-named pair says which one this is.'}, 'until': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Alias of `completed_before`, kept because it is the name the public team runs endpoint ships. Prefer `completed_before`.'}, 'cursor': {'type': 'string', 'minLength': 1, 'description': 'Resume after the run a previous page ended on: pass the `next_cursor` that page returned, with the same filters and sort_order. Runs created or resolved in between cannot shift a boundary you have already passed, so a sweep sees every run exactly once, and a sweep that started under the default 7-day window keeps that window on every page. This list has no offset parameter: skipping rows costs the database every skipped row, and a run created between two requests shifts every later offset by one, so an offset sweep can repeat or miss a run. 400 when the value is not a cursor this endpoint issued.'}, 'source': {'type': 'string', 'description': 'Filter to runs created from this source (e.g. api, scheduling)'}, 'status': {'enum': ['not_started', 'pending', 'starting', 'running', 'waiting', 'completed', 'failed', 'interrupted', 'stopped', 'needs_attention'], 'type': 'string', 'description': 'Filter to runs with this status. `needs_attention` is the monitoring status: runs that are waiting on a human or failed, plus runs whose latest evaluation flagged a critical issue â\x80\x94 a run can finish as `completed` and still have accomplished nothing.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to runs on this team'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to runs for this agent'}, 'count_only': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': 'Skip row selection and enrichment. The normal list response shape is returned with an empty row array and the matching total.'}, 'has_issues': {'enum': ['true', 'false'], 'type': 'string', 'description': "Filter on the run's latest successful evaluation: true returns only runs it flagged, false only runs it did not. Only the latest evaluation counts â\x80\x94 an older flag does not match â\x80\x94 and a run whose latest evaluation errored, or that has none, counts as unflagged. Omit to return both."}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction on created_at (default desc)'}, 'created_after': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': "Return runs created at or after this ISO-8601 timestamp. Every run has a creation time, so this is the window that returns all runs in a period whatever state they reached â\x80\x94 unlike the started and completed windows below, which exclude runs that never started and runs still in flight respectively. When the request carries no lower time bound (`created_after`, `started_after`, `completed_after` or `since`), this defaults to 7 days ago and `default_window_applied` is true in the response: an organization's run history is unbounded, and a monitor wants what is recent. An upper bound alone keeps the default floor. Pass any lower bound to replace it."}, 'include_total': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': 'Return `total`, the count of every matching run ignoring pagination. Off by default: counting walks every match where the page stops at `limit`, so on a large organization it costs orders of magnitude more than the rows themselves. Ask for it when you are driving a pager, not when you are polling. Implied by `count_only`.'}, 'started_after': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Return runs that started at or after this ISO-8601 timestamp. Runs that never started are excluded. Pair with `started_before` to bound a stuck-run query to a window â\x80\x94 without a lower bound, `status=running` also counts every run left running months ago.'}, 'created_before': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': "Return runs created before this ISO-8601 timestamp (exclusive). Pair with `created_after` for a period. A closed creation window is also the stable one to paginate: results are ordered by creation time, so runs arriving mid-sweep cannot shift a closed window's pages."}, 'issue_severity': {'enum': ['critical', 'medium', 'low'], 'type': 'string', 'description': 'Only runs whose latest successful evaluation has at least one failing rubric at this severity (critical | medium | low). Implies has_issues.'}, 'started_before': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Return runs that started before this ISO-8601 timestamp. Combine with status=running to find stuck runs â\x80\x94 `since`/`until` filter on completion, so they never match a run that is still going.'}, 'completed_after': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Return runs completed at or after this ISO-8601 timestamp. Runs that have not completed are excluded, including every stuck one â\x80\x94 reach for `started_after`/`started_before` to bound those. Alias of `since`; pass one or the other, not both.'}, 'completed_before': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'description': 'Return runs completed before this ISO-8601 timestamp (exclusive). Runs that have not completed are excluded. Alias of `until`; pass one or the other, not both.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'limit': {'type': 'number', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Number of teams per page (1-100, default 50)'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Organization ID'}, 'offset': {'type': 'number', 'minimum': 0, 'description': 'Number of teams to skip'}, 'search': {'type': 'string', 'maxLength': 200, 'description': 'Filter teams by name (case-insensitive substring match)'}, 'sortBy': {'enum': ['createdAt', 'name'], 'type': 'string', 'default': 'createdAt', 'description': 'Sort order: createdAt (newest first, default) or name (alphabetical)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'description': 'Maximum number of comment threads to return (1-200, default 50).', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of comment threads to skip, for paging.'}, 'status': {'enum': ['open', 'complete'], 'type': 'string', 'description': 'Return only threads in this state: `open` for threads not yet marked complete, `complete` for those that are. Omit for both. `total` and `open_total` always count the whole set, so a filtered page still reports how many threads exist.'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'description': 'Maximum number of messages to return (1-500, default 50).', 'exclusiveMinimum': 0}, 'before': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Message id cursor: return the page of messages immediately older than this message. Omit for the most recent page.'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of results per page (1-100, default 20)'}, 'scope': {'enum': ['created', 'shared', 'team', 'automation'], 'type': 'string', 'default': 'created', 'description': "Which dashboards to return: 'created' (yours, the default), 'team' (published to your whole team by a teammate), 'shared' (shared with you individually by a teammate), or 'automation' (owned by one of your team's automations, each carrying its automation's name)."}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of results to skip'}, 'after_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Keyset cursor for reading the whole 'automation' scope: the id of the last dashboard you received; returns the page after it in (created_at, id) order. Use this instead of 'offset' when reading every page, so a dashboard created, updated or deleted between requests cannot shift a page boundary you have already passed. 400 when the id no longer names a dashboard (restart from the first page). Only valid with scope=automation."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifact_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Current Pulse artifact ID, supplied by the builder or viewer context.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'limit': {'type': 'integer', 'default': 1000, 'maximum': 1000, 'minimum': 1, 'description': 'Number of labels per page (1-1000, default 1000).'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 250, 'maximum': 250, 'minimum': 1, 'description': 'Number of queues per page (1-250, default 250)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of queues to skip'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Only return queues belonging to this automation.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Integration ID (catalog integration ID or slot ID from the list response)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Integration ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'buildId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'buildId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'buildId'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'buildId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Number of messages per page (1-50, default 20)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of messages to skip'}, 'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The run's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of runs per page (1-100, default 20)'}, 'since': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Return runs completed at or after this ISO-8601 timestamp. Runs that have not completed are excluded.'}, 'until': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Return runs completed before this ISO-8601 timestamp. The upper bound is exclusive. Runs that have not completed are excluded.'}, 'offset': {'type': 'number', 'minimum': 0, 'description': 'Number of runs to skip'}, 'search': {'type': 'string', 'description': 'Full-text search across run titles and case titles'}, 'source': {'type': 'string', 'description': 'Filter to runs created from this source (e.g. api, schedule)'}, 'status': {'enum': ['not_started', 'pending', 'starting', 'running', 'waiting', 'completed', 'failed', 'interrupted', 'stopped', 'needs_attention'], 'type': 'string', 'description': 'Filter to runs with this status'}, 'sort_by': {'enum': ['created_at'], 'type': 'string', 'default': 'created_at', 'description': 'Field to sort by (default created_at)'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'user_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to runs owned by this user; non-superadmin callers are scoped to themselves regardless of this value'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to runs for this agent'}, 'digest_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'count_only': {'enum': ['true', 'false'], 'type': 'string', 'default': 'false', 'description': 'Skip row selection and enrichment. The normal list response shape is returned with an empty row array and the matching total.'}, 'has_issues': {'enum': ['true', 'false'], 'type': 'string', 'description': "Filter on the run's latest successful evaluation: true returns only runs it flagged, false only runs it did not. Only the latest evaluation counts â\x80\x94 an older flag does not match â\x80\x94 and a run whose latest evaluation errored, or that has none, counts as unflagged. Omit to return both."}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction (default desc)'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to runs whose agent belongs to this automation'}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Filter to runs associated with this queue'}, 'issue_severity': {'enum': ['critical', 'medium', 'low'], 'type': 'string', 'description': 'If set, only return runs whose latest successful evaluation has at least one failing rubric with this severity (critical | medium | low). Implies has_issues; legacy evaluations without severity companion fields do not match this filter.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sandbox_id'], 'properties': {'path': {'type': 'string', 'default': '/workspace', 'description': 'Directory to list files from (defaults to /workspace)'}, 'sandbox_id': {'type': 'string', 'minLength': 1, 'description': "The sandbox's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id'], 'properties': {'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id'], 'properties': {'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_revision_id'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of files to return per page (1-1000, default 100)'}, 'cursor': {'type': 'string', 'minLength': 1, 'description': "Opaque continuation token from a previous response's `next_cursor`. Omit for the first page."}, 'skill_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill revision ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of revisions per page (1-100, default 20)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of revisions to skip'}, 'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'processId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "List the pending invitations for this Clarity process instead of the team's own invitations. Requires the process creator or a team admin."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Number of members per page (1-100, default 50)'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of members to skip'}, 'search': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Optional case-insensitive name or email search'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The notification batch's unique identifier"}, 'types': {'type': 'array', 'items': {'enum': ['connection_broken', 'case_failed', 'critical_case_issue', 'case_issue', 'critical_eval_issue', 'eval_issue', 'job_issue', 'job_done', 'background_job', 'schedule_issue', 'config_proposal'], 'type': 'string'}, 'maxItems': 11, 'minItems': 1}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'severity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string'}, 'openedFrom': {'enum': ['in_app', 'email', 'slack', 'teams'], 'type': 'string'}, 'minSeverity': {'enum': ['info', 'warning', 'critical', 'success'], 'type': 'string'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The notification's unique identifier"}, 'openedFrom': {'enum': ['in_app', 'email', 'slack', 'teams'], 'type': 'string'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'target_team_id'], 'properties': {'dry_run': {'anyOf': [{'type': 'boolean'}, {'type': 'string', 'const': 'true'}, {'type': 'string', 'const': 'false'}], 'description': 'When true, preview the closure and warnings without applying any changes.'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The ID of the agent to move.'}, 'target_team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The ID of the team to move the agent into.'}, 'bypass_standalone_gate': {'type': 'boolean', 'default': False, 'description': 'When true, move the agent together with every connected queue, trigger, and handover peer instead of rejecting a non-standalone agent. Defaults to false.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_ids', 'folder_id'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'agent_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1, 'description': 'IDs of the agents (assignments) to move. Must be unique.'}, 'folder_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Destination folder ID. Pass null to move the agents to the root level.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_ids', 'folder_id'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'folder_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Destination folder ID. Pass null to move the automations to the root level.'}, 'automation_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1, 'description': 'IDs of the automations to move. Must be unique.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['processIds', 'folderId'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'folderId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Destination folder ID, or null to move back to Unfiled.'}, 'processIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 100, 'minItems': 1, 'description': 'Clarity process IDs to move.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'targetTeamId'], 'properties': {'dryRun': {'anyOf': [{'type': 'boolean'}, {'type': 'string', 'const': 'true'}, {'type': 'string', 'const': 'false'}], 'description': 'When true, only previews the move: reports which Connections would reconnect vs drop without changing anything.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'targetTeamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'ID of the destination team the dashboard moves to.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'instructions': {'type': 'string', 'description': 'Deprecated: ignored. The organize pass takes no instructions.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_id', 'connection_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'ID of one of your connections (from GET /v2/teams/:team_id/connections) to pin to this slot'}, 'integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Integration ID (catalog integration ID or slot ID from the list response)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'type'], 'properties': {'type': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'The snapshot kind to post-process.'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'current_process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Required when type is `current_process`.'}, 'transformation_proposal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Required when type is `transformation_proposal`.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run_id', 'message'], 'properties': {'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The run's unique identifier"}, 'message': {'type': 'string', 'minLength': 1, 'description': 'The message content to send to the agent'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'case_queue_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The queue to check for conflicts against'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'headers': {'type': 'object', 'description': 'Optional HTTP headers for authentication (raw server_url mode only)', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'server_url': {'type': 'string', 'format': 'uri', 'description': 'Raw MCP server URL to probe (for custom MCP servers)'}, 'integration_slug': {'enum': ['googlecalendar', 'google-calendar', 'gmail', 'slack', 'googledocs', 'googlesheets', 'googledrive', 'firecrawl', 'exa', 'exa-search', 'exa-company-search', 'exa-people-search', 'deep-research', 'system', 'browser-agent', 'browser-agent-devtools', 'notion', 'linear', 'confluence', 'custom_mcp', 'user_mcp', 'snowflake', 'sharepoint', 'teams', 'onedrive', 'bigquery', 'databricks', 'netsuite', 'outlook', 'microsoft-calendar', 'excel', 'word', 'saps4hana', 'md365', 'businesscentral', 'oraclefusion', 'workday', 'coupa', 'signavio', 'sap-ecc', 'msteams', 'human-in-the-loop', 'email-attachments-reader', 'document-processor', 'google-docs', 'google-sheets', 'google-drive', 'outbound-call', 'case-queue-producer', 'case-queue-consumer', 'handover', 'shopify', 'hubspot', 'zendesk', 'intercom', 'powerbi', 'salesforce', 'pipedrive', 'tableau', 'image-generation', 'forecasting', 'supabase', 'attio', 'amplitude', 'websets', 'firecrawl-platform', 'duvo-computer-use', 'duvo-computer-use-rdp', 'eu-commodity-prices', 'asana', 'jira', 'ssh', 'scheduling', 'github', 'linear-native', 'notion-native', 'granola', 'apify', 'bamboohr', 'edi', 'maersk', 'infor-nexus', 'dhl', 'fedex', 'ups', 'dsv', 'trinity-logistics', 'ontrac', 'dachser', 'hellmann', 'omni-logistics', 'ceva-logistics', 'dpd', 'canada-post', 'o9', 'manhattan', 'blue-yonder'], 'type': 'string', 'description': 'Catalog integration slug. The backend resolves the MCP server URL and dummy auth headers server-side â\x80\x94 no server_url or headers needed.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind', 'snapshot_id'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'snapshot_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Snapshot id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['build_id'], 'properties': {'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The build's unique identifier"}, 'revision_name': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Optional display name to set on the promoted revision.'}, 'revision_description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional description for the promoted revision. Pass null to clear an existing description.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_revision_id'], 'properties': {'revision_name': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Optional display name to set on the promoted revision.'}, 'skill_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill revision ID.'}, 'revision_description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional description for the promoted revision. Pass null to clear an existing description.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'teamId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'default': None}, 'parentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'default': None}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 5000}, {'type': 'null'}], 'description': 'One short paragraph (1-3 sentences) saying why this process belongs in the landscape. Use only what you saw in the captures. Say what the process is (don\'t just repeat the name), show proof it really happens, and name where you heard it - be as specific as the captures allow, like "a warehouse lead said so in their interview" or "it came up in two returns recordings". Use only facts from the captures: never make up sources, people, dates, quotes, or numbers, and don\'t stretch what was said. If you have no real proof the process happens, don\'t propose it.'}, 'materializationMode': {'enum': ['auto', 'proposal'], 'type': 'string', 'description': 'Use "proposal" to record a process the organization plausibly needs, owned by `teamId` for review, WITHOUT creating a real process record. `teamId` is then required. Chat-scoped discovery agents may use proposal mode for their pinned team; direct human and API callers require Manager-or-above authority for that team. A proposal is idempotent: an equivalent live proposal under the same parent is returned untouched rather than duplicated. Defaults to "auto", which materializes a real process when `teamId` is set â\x80\x94 except in a landscape-onboarding chat, which may only propose, and so defaults to "proposal".'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'visibility'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'permission': {'enum': ['view', 'edit'], 'type': 'string'}, 'visibility': {'enum': ['private', 'team', 'organization'], 'type': 'string'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'definition_id'], 'properties': {'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'definition_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The aggregation definition's identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The suggestion's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'case_queue_id'], 'properties': {'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Queue ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'revision_id', 'agent_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'revision_id', 'case_queue_id'], 'properties': {'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Queue ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId', 'personId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'A process landscape node that is linked to a real process.'}, 'teamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'personId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The person entry to change, as returned by listClarityLandscapeNodePeople.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'invitationId'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Clarity process ID.'}, 'invitationId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Accepted process invitation to remove.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Integration ID (catalog integration ID or slot ID from the list response)'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['memberId'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'memberId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Member (user) ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['relativePath', 'newFilenameOnly'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'relativePath': {'type': 'string', 'minLength': 1, 'description': "Current path of the file relative to the team's storage root"}, 'newFilenameOnly': {'type': 'string', 'minLength': 1, 'description': 'New file name (no extension; the existing extension is preserved)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['folderIds'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'folderIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 500, 'minItems': 1, 'description': 'Every team folder ID, in the desired display order.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'orderedAreaIds'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'parentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'The parent area whose folder children are being reordered. Omit or pass null to reorder the top-level areas.'}, 'orderedAreaIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1, 'description': 'Every area folder in the sibling group, exactly once, in the order you want them displayed left-to-right. Read the current siblings first (getClarityProcessTree); a partial list is rejected with 400.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'rubrics'], 'properties': {'rubrics': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'description'], 'properties': {'title': {'type': 'string', 'maxLength': 80, 'minLength': 3, 'description': 'Short, human-readable Pass/Fail rubric title.'}, 'description': {'type': 'string', 'maxLength': 400, 'minLength': 20, 'description': 'A 1-2 sentence Pass condition phrased as a question.'}}, 'additionalProperties': False}, 'maxItems': 12, 'minItems': 1, 'description': "The complete case-level rubric set for the queue's current version (at least 1 rubric). Replaces every existing rubric."}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'rubrics'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Assignment ID)"}, 'rubrics': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'description'], 'properties': {'title': {'type': 'string', 'maxLength': 80, 'minLength': 3, 'description': 'Short, human-readable Pass/Fail rubric title.'}, 'description': {'type': 'string', 'maxLength': 400, 'minLength': 20, 'description': 'A 1-2 sentence Pass condition phrased as a question.'}}, 'additionalProperties': False}, 'maxItems': 5, 'description': 'The complete custom rubric set for the build. Replaces every existing custom rubric; pass an empty array to clear them.'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Replace the custom rubrics on this build (revision). Defaults to the agent's live build when omitted."}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'schema', 'change_summary'], 'properties': {'schema': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'change_summary': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'expected_schema_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_id', 'queue_ids'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'queue_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'description': 'Full set of queue IDs to link to this slot. Replaces any existing links.'}, 'integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Integration ID'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run_id', 'request_id'], 'properties': {'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The run's unique identifier"}, 'answers': {'type': 'object', 'description': 'For question-type requests: a map of question text to answer. Multi-select answers should be comma-separated.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'approved': {'type': 'boolean', 'description': 'For approval-type requests: true to approve, false to deny'}, 'request_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The human request's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'field_id'], 'properties': {'field_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The config field's unique identifier"}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The automation's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'revisionId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'revisionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['builder_run_id', 'answers'], 'properties': {'answers': {'type': 'object', 'description': 'Answers keyed by the exact question text in pending_user_questions.questions.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'builder_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The builder run waiting for answers.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind', 'snapshot_id'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'snapshot_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Snapshot id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind', 'steps', 'baselineSnapshotId'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'swot': {'anyOf': [{'type': 'object', 'required': ['strengths', 'weaknesses', 'opportunities', 'threats'], 'properties': {'threats': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'description': 'External risks that could degrade the current process â\x80\x94 regulatory, operational, technological, or human factors visible in the captures. Example: "New ID-check legislation will require staff to interrupt every order."'}, 'strengths': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'description': 'Internal advantages of the current process â\x80\x94 capabilities, resources, or design choices that work in its favour today. Phrase each as a short, evidence-backed statement. Example: "Bartenders know regulars by name, which keeps service personal during peak hours."'}, 'weaknesses': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'description': 'Internal limitations of the current process â\x80\x94 gaps, inefficiencies, or fragile assumptions visible in how it runs today. Phrase each as a short, evidence-backed statement. Example: "Manual pour times balloon during rushes because there is only one tap."'}, 'opportunities': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'description': 'External openings the current process could exploit â\x80\x94 adjacent automations, scale effects, or unmet needs surfaced by the captures. Example: "POS data could feed dynamic pricing for slow hours."'}}}, {'type': 'null'}], 'description': 'SWOT analysis produced by the swot-analysis postprocessing agent. `undefined` = agent has not yet run; `null` = agent ran and produced no analysis.'}, 'steps': {'type': 'array', 'items': {'anyOf': [{'oneOf': [{'type': 'object', 'required': ['id', 'targetSteps', 'title', 'action', 'role', 'system', 'input', 'output', 'exceptions', 'assumptions', 'openQuestions', 'confidence', 'nodeType', 'nodeSubtype', 'description', 'rationale', 'sources', 'condition'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for the step. Referenced by targetSteps[].stepId and by postprocessing agents annotating specific steps. Example: "step-review-invoice"'}, 'role': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Performer of this step â\x80\x94 the specific job title, team, or system. Use "Duvo" for automated actions and "System" for system-triggered steps. Examples: "Finance Analyst", "Sales Operations", "Duvo", "System"'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Information or artifacts required to start this step. Null on start events or steps with no preconditions. Example: "Invoice PDF and matching purchase order number"'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Required node label used in lists and BPMN node labels. Structural markers use defaults such as "Start" and "End".'}, 'action': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Verb-led one-liner summarizing the concrete action performed. Example: "Reviews invoice line items in NetSuite against the purchase order."'}, 'output': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'What this step produces or updates. Null on pure waits or events that emit nothing. Example: "Approved invoice record in NetSuite with reviewer signature"'}, 'system': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'System, tool, or application used to perform this step. Null when the step is purely manual or is a decision/event with no associated tool. Examples: "NetSuite", "Gmail", "Excel", null'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['attribution', 'excerpt'], 'properties': {'excerpt': {'type': 'string', 'minLength': 1, 'description': 'Verbatim supporting text quoted from the capture, document, or transcript. Example: "We always wait for finance to sign off before sending the invoice."'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['type', 'messageIndex'], 'properties': {'type': {'type': 'string', 'const': 'transcript_message'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Optional epoch-millisecond timestamp for the transcript message when the capture supplied one.'}, 'messageIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index into the capture transcript message array. This is the durable key; timestampMs is only supplemental.'}}}, {'type': 'object', 'required': ['type', 'startOffset', 'endOffset'], 'properties': {'type': {'type': 'string', 'const': 'document_text_range'}, 'endLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text ends on pageNumber.', 'exclusiveMinimum': 0}, 'endOffset': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exclusive character offset into the stored capture text. Must be greater than startOffset.', 'exclusiveMinimum': 0}, 'startLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text starts on pageNumber.', 'exclusiveMinimum': 0}, 'pageNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based PDF page number when the stored capture has page metadata.', 'exclusiveMinimum': 0}, 'startOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based character offset into the stored capture text.'}}}, {'type': 'object', 'required': ['type', 'elementId'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element name as parsed from the XML. The element id is the durable key.'}, 'type': {'type': 'string', 'const': 'bpmn_element'}, 'elementId': {'type': 'string', 'minLength': 1, 'description': 'BPMN XML element id within an uploaded .bpmn document.'}, 'elementType': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element type as parsed from the XML, for example "bpmn:UserTask" or "bpmn:ExclusiveGateway".'}}}, {'type': 'object', 'required': ['type', 'timestampMs'], 'properties': {'type': {'type': 'string', 'const': 'screenshare_frame'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Epoch-millisecond frame timestamp matching a screenshare frame filename.'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'manual'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'unresolved'}, 'reason': {'type': 'string', 'minLength': 1}}}], 'description': 'Durable in-capture location for the excerpt. Missing means legacy free-text source; unresolved means a structured citation was attempted but could not be resolved.'}, 'captureId': {'type': 'string', 'minLength': 1, 'description': 'Durable clarity_capture id for this source. Use app-owned ids from the evidence index, never sandbox file paths.'}, 'evidenceId': {'type': 'string', 'minLength': 1, 'description': 'Stable id of the evidence unit from /workspace/captures/evidence-index.json when generation used that index.'}, 'attribution': {'type': 'string', 'minLength': 1, 'description': 'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP §3.2", "Slack #ops 2024-06-12"'}, 'resolutionStatus': {'enum': ['resolved', 'unresolved', 'legacy', 'manual'], 'type': 'string', 'description': 'Resolution status for the structured source link. Legacy sources may omit this field.'}, 'sourceConfidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in this individual source citation. "high" = direct quote at the locator, "medium" = strong nearby evidence, "low" = weak or inferred support.'}}}, 'description': 'Evidence supporting this event. Empty array allowed (structural markers carry no evidence); non-empty values must follow the source schema.'}, 'nodeType': {'type': 'string', 'const': 'event'}, 'condition': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Always null on events; included for shape compatibility across variants.'}, 'rationale': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': "Optional reason for the event's existence. May be null for structural markers."}, 'readiness': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'null'}], 'description': 'Automation-readiness rating for this step. "high" = fully automatable today, "medium" = partially automatable or needs minor changes, "low" = blocked by manual review, judgement, or missing data.'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in the accuracy of this step given evidence quality and completeness. "high" = directly stated by multiple sources, "medium" = stated by one source or inferred from strong signals, "low" = inferred with significant assumptions.'}, 'exceptions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'exception', 'handling', 'frequency'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for this exception. Preserve it when the same exception is edited or regenerated. Example: "exception-po-mismatch"'}, 'handling': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'How the team responds to this exception. Null when the response was not documented.'}, 'exception': {'type': 'string', 'minLength': 1, 'description': 'A distinct failure mode that can happen at this step.'}, 'frequency': {'anyOf': [{'enum': ['rare', 'occasional', 'frequent'], 'type': 'string'}, {'type': 'null'}], 'description': 'Observed frequency. Null unless evidence explicitly supports rare, occasional, or frequent.'}}}, 'description': 'Distinct failure modes for this step in display order. Use an empty array when none are documented. Preserve each id when the same exception is edited or regenerated.'}, 'assumptions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Assumptions the LLM made when extracting this step that were not directly stated in captures. Null if none. Used by verification agents to flag risky inferences. Example: ["Invoices are reviewed within 24 hours of receipt"]'}, 'description': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Optional prose describing what happens at this event. May be null for structural markers.'}, 'nodeSubtype': {'enum': ['start', 'end', 'timer', 'message', 'escalation'], 'type': 'string', 'description': 'BPMN event subtype. "start" (entry trigger), "end" (terminal state), "timer" (time-based wait), "message" (external communication), "escalation" (route to higher authority).'}, 'targetSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['stepId', 'label', 'isDefault'], 'properties': {'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Human-readable label shown on the BPMN edge. For gateways, the outcome answer; for default flows, "Otherwise". Examples: "Approved", "> $5k", "Otherwise"'}, 'stepId': {'type': 'string', 'minLength': 1, 'description': 'Id of the step this edge points to. Must match an existing step.id in the same steps array. Example: "step-review-invoice"'}, 'isDefault': {'type': 'boolean', 'description': 'True on exactly one outgoing edge of an exclusive or inclusive gateway, marking the fallback taken when no other condition matches. False on all other edges.'}}}, 'description': 'Outgoing BPMN edges from this step. Empty array only on end events. Exclusive and inclusive gateways must have â\x89¥2 entries with exactly one isDefault: true.'}, 'linkedAgentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "Id of the Duvo Agent that performs this step. Set by a person in edit mode, never by a generating or postprocessing agent; the save route rejects an id that is not a live Agent on the process's team."}, 'openQuestions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Specific gaps in understanding that a follow-up capture should address. Null if none. Drives the next interview or document request. Example: ["Is there a backup approver when the AP manager is out of office?"]'}, 'extraCaptureNeeded': {'anyOf': [{'type': 'object', 'required': ['id', 'gap'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Id of the `clarity_proposal_extra_capture_request` row this slot points at. Created server-side by the agent after the LLM call; the LLM never produces this value.'}, 'gap': {'type': 'string', 'minLength': 1, 'description': 'Plain-language description of what about this step is unknown or under-specified, blocking automation. One short sentence. Example: "We don\'t know which fields the AP analyst copies from the invoice into NetSuite."'}, 'proposal': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'What the new capture should include in order to resolve the gap â\x80\x94 concrete actions, screens, or decisions the user should walk through. Optional: omit when no specific proposal can be inferred. Example: "Walk through reviewing one invoice in NetSuite end-to-end while narrating each field you check."'}}}, {'type': 'null'}]}, 'readinessRationale': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'One-sentence justification for the readiness rating, citing the specific signals that drove the choice. Example: "Requires human judgement on edge cases that are not documented in the captures."'}}}, {'type': 'object', 'required': ['id', 'targetSteps', 'title', 'action', 'role', 'system', 'input', 'output', 'exceptions', 'assumptions', 'openQuestions', 'confidence', 'nodeType', 'nodeSubtype', 'description', 'rationale', 'sources', 'condition'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for the step. Referenced by targetSteps[].stepId and by postprocessing agents annotating specific steps. Example: "step-review-invoice"'}, 'role': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Performer of this step â\x80\x94 the specific job title, team, or system. Use "Duvo" for automated actions and "System" for system-triggered steps. Examples: "Finance Analyst", "Sales Operations", "Duvo", "System"'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Information or artifacts required to start this step. Null on start events or steps with no preconditions. Example: "Invoice PDF and matching purchase order number"'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Required node label used in lists and BPMN node labels. Structural markers use defaults such as "Start" and "End".'}, 'action': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Verb-led one-liner summarizing the concrete action performed. Example: "Reviews invoice line items in NetSuite against the purchase order."'}, 'output': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'What this step produces or updates. Null on pure waits or events that emit nothing. Example: "Approved invoice record in NetSuite with reviewer signature"'}, 'system': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'System, tool, or application used to perform this step. Null when the step is purely manual or is a decision/event with no associated tool. Examples: "NetSuite", "Gmail", "Excel", null'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['attribution', 'excerpt'], 'properties': {'excerpt': {'type': 'string', 'minLength': 1, 'description': 'Verbatim supporting text quoted from the capture, document, or transcript. Example: "We always wait for finance to sign off before sending the invoice."'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['type', 'messageIndex'], 'properties': {'type': {'type': 'string', 'const': 'transcript_message'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Optional epoch-millisecond timestamp for the transcript message when the capture supplied one.'}, 'messageIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index into the capture transcript message array. This is the durable key; timestampMs is only supplemental.'}}}, {'type': 'object', 'required': ['type', 'startOffset', 'endOffset'], 'properties': {'type': {'type': 'string', 'const': 'document_text_range'}, 'endLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text ends on pageNumber.', 'exclusiveMinimum': 0}, 'endOffset': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exclusive character offset into the stored capture text. Must be greater than startOffset.', 'exclusiveMinimum': 0}, 'startLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text starts on pageNumber.', 'exclusiveMinimum': 0}, 'pageNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based PDF page number when the stored capture has page metadata.', 'exclusiveMinimum': 0}, 'startOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based character offset into the stored capture text.'}}}, {'type': 'object', 'required': ['type', 'elementId'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element name as parsed from the XML. The element id is the durable key.'}, 'type': {'type': 'string', 'const': 'bpmn_element'}, 'elementId': {'type': 'string', 'minLength': 1, 'description': 'BPMN XML element id within an uploaded .bpmn document.'}, 'elementType': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element type as parsed from the XML, for example "bpmn:UserTask" or "bpmn:ExclusiveGateway".'}}}, {'type': 'object', 'required': ['type', 'timestampMs'], 'properties': {'type': {'type': 'string', 'const': 'screenshare_frame'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Epoch-millisecond frame timestamp matching a screenshare frame filename.'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'manual'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'unresolved'}, 'reason': {'type': 'string', 'minLength': 1}}}], 'description': 'Durable in-capture location for the excerpt. Missing means legacy free-text source; unresolved means a structured citation was attempted but could not be resolved.'}, 'captureId': {'type': 'string', 'minLength': 1, 'description': 'Durable clarity_capture id for this source. Use app-owned ids from the evidence index, never sandbox file paths.'}, 'evidenceId': {'type': 'string', 'minLength': 1, 'description': 'Stable id of the evidence unit from /workspace/captures/evidence-index.json when generation used that index.'}, 'attribution': {'type': 'string', 'minLength': 1, 'description': 'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP §3.2", "Slack #ops 2024-06-12"'}, 'resolutionStatus': {'enum': ['resolved', 'unresolved', 'legacy', 'manual'], 'type': 'string', 'description': 'Resolution status for the structured source link. Legacy sources may omit this field.'}, 'sourceConfidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in this individual source citation. "high" = direct quote at the locator, "medium" = strong nearby evidence, "low" = weak or inferred support.'}}}, 'minItems': 1, 'description': "Evidence supporting this step's existence and details. At least one source is required â\x80\x94 every step must trace back to something in the captures."}, 'nodeType': {'type': 'string', 'const': 'task'}, 'condition': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Optional precondition that gates this task. Null when the task is unconditional. Example: "Only when invoice total exceeds $10,000"'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': 'Why this step exists in the process â\x80\x94 its purpose or business reason. Used by downstream agents to assess whether the step is essential or removable. Example: "Catches mispriced line items before they reach the customer and prevents downstream credit notes."'}, 'readiness': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'null'}], 'description': 'Automation-readiness rating for this step. "high" = fully automatable today, "medium" = partially automatable or needs minor changes, "low" = blocked by manual review, judgement, or missing data.'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in the accuracy of this step given evidence quality and completeness. "high" = directly stated by multiple sources, "medium" = stated by one source or inferred from strong signals, "low" = inferred with significant assumptions.'}, 'exceptions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'exception', 'handling', 'frequency'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for this exception. Preserve it when the same exception is edited or regenerated. Example: "exception-po-mismatch"'}, 'handling': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'How the team responds to this exception. Null when the response was not documented.'}, 'exception': {'type': 'string', 'minLength': 1, 'description': 'A distinct failure mode that can happen at this step.'}, 'frequency': {'anyOf': [{'enum': ['rare', 'occasional', 'frequent'], 'type': 'string'}, {'type': 'null'}], 'description': 'Observed frequency. Null unless evidence explicitly supports rare, occasional, or frequent.'}}}, 'description': 'Distinct failure modes for this step in display order. Use an empty array when none are documented. Preserve each id when the same exception is edited or regenerated.'}, 'assumptions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Assumptions the LLM made when extracting this step that were not directly stated in captures. Null if none. Used by verification agents to flag risky inferences. Example: ["Invoices are reviewed within 24 hours of receipt"]'}, 'description': {'type': 'string', 'minLength': 1, 'description': 'Full prose paragraph describing what happens in this step in natural language. Used for documentation reconstruction. Example: "Finance reviews the invoice in NetSuite, checking line item accuracy and matching against the purchase order before flagging for approval."'}, 'nodeSubtype': {'enum': ['user', 'service', 'send', 'receive', 'manual', 'businessRule', 'script'], 'type': 'string', 'description': 'BPMN task subtype. "user" (human work), "service" (automated/API call), "send"/"receive" (messaging), "manual" (offline physical work), "businessRule" (rule engine), "script" (code execution).'}, 'targetSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['stepId', 'label', 'isDefault'], 'properties': {'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Human-readable label shown on the BPMN edge. For gateways, the outcome answer; for default flows, "Otherwise". Examples: "Approved", "> $5k", "Otherwise"'}, 'stepId': {'type': 'string', 'minLength': 1, 'description': 'Id of the step this edge points to. Must match an existing step.id in the same steps array. Example: "step-review-invoice"'}, 'isDefault': {'type': 'boolean', 'description': 'True on exactly one outgoing edge of an exclusive or inclusive gateway, marking the fallback taken when no other condition matches. False on all other edges.'}}}, 'description': 'Outgoing BPMN edges from this step. Empty array only on end events. Exclusive and inclusive gateways must have â\x89¥2 entries with exactly one isDefault: true.'}, 'linkedAgentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "Id of the Duvo Agent that performs this step. Set by a person in edit mode, never by a generating or postprocessing agent; the save route rejects an id that is not a live Agent on the process's team."}, 'openQuestions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Specific gaps in understanding that a follow-up capture should address. Null if none. Drives the next interview or document request. Example: ["Is there a backup approver when the AP manager is out of office?"]'}, 'extraCaptureNeeded': {'anyOf': [{'type': 'object', 'required': ['id', 'gap'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Id of the `clarity_proposal_extra_capture_request` row this slot points at. Created server-side by the agent after the LLM call; the LLM never produces this value.'}, 'gap': {'type': 'string', 'minLength': 1, 'description': 'Plain-language description of what about this step is unknown or under-specified, blocking automation. One short sentence. Example: "We don\'t know which fields the AP analyst copies from the invoice into NetSuite."'}, 'proposal': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'What the new capture should include in order to resolve the gap â\x80\x94 concrete actions, screens, or decisions the user should walk through. Optional: omit when no specific proposal can be inferred. Example: "Walk through reviewing one invoice in NetSuite end-to-end while narrating each field you check."'}}}, {'type': 'null'}]}, 'readinessRationale': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'One-sentence justification for the readiness rating, citing the specific signals that drove the choice. Example: "Requires human judgement on edge cases that are not documented in the captures."'}}}, {'type': 'object', 'required': ['id', 'targetSteps', 'title', 'action', 'role', 'system', 'input', 'output', 'exceptions', 'assumptions', 'openQuestions', 'confidence', 'nodeType', 'nodeSubtype', 'description', 'rationale', 'sources', 'condition'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for the step. Referenced by targetSteps[].stepId and by postprocessing agents annotating specific steps. Example: "step-review-invoice"'}, 'role': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Performer of this step â\x80\x94 the specific job title, team, or system. Use "Duvo" for automated actions and "System" for system-triggered steps. Examples: "Finance Analyst", "Sales Operations", "Duvo", "System"'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Information or artifacts required to start this step. Null on start events or steps with no preconditions. Example: "Invoice PDF and matching purchase order number"'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Required node label used in lists and BPMN node labels. Structural markers use defaults such as "Start" and "End".'}, 'action': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Verb-led one-liner summarizing the concrete action performed. Example: "Reviews invoice line items in NetSuite against the purchase order."'}, 'output': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'What this step produces or updates. Null on pure waits or events that emit nothing. Example: "Approved invoice record in NetSuite with reviewer signature"'}, 'system': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'System, tool, or application used to perform this step. Null when the step is purely manual or is a decision/event with no associated tool. Examples: "NetSuite", "Gmail", "Excel", null'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['attribution', 'excerpt'], 'properties': {'excerpt': {'type': 'string', 'minLength': 1, 'description': 'Verbatim supporting text quoted from the capture, document, or transcript. Example: "We always wait for finance to sign off before sending the invoice."'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['type', 'messageIndex'], 'properties': {'type': {'type': 'string', 'const': 'transcript_message'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Optional epoch-millisecond timestamp for the transcript message when the capture supplied one.'}, 'messageIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index into the capture transcript message array. This is the durable key; timestampMs is only supplemental.'}}}, {'type': 'object', 'required': ['type', 'startOffset', 'endOffset'], 'properties': {'type': {'type': 'string', 'const': 'document_text_range'}, 'endLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text ends on pageNumber.', 'exclusiveMinimum': 0}, 'endOffset': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exclusive character offset into the stored capture text. Must be greater than startOffset.', 'exclusiveMinimum': 0}, 'startLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text starts on pageNumber.', 'exclusiveMinimum': 0}, 'pageNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based PDF page number when the stored capture has page metadata.', 'exclusiveMinimum': 0}, 'startOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based character offset into the stored capture text.'}}}, {'type': 'object', 'required': ['type', 'elementId'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element name as parsed from the XML. The element id is the durable key.'}, 'type': {'type': 'string', 'const': 'bpmn_element'}, 'elementId': {'type': 'string', 'minLength': 1, 'description': 'BPMN XML element id within an uploaded .bpmn document.'}, 'elementType': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element type as parsed from the XML, for example "bpmn:UserTask" or "bpmn:ExclusiveGateway".'}}}, {'type': 'object', 'required': ['type', 'timestampMs'], 'properties': {'type': {'type': 'string', 'const': 'screenshare_frame'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Epoch-millisecond frame timestamp matching a screenshare frame filename.'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'manual'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'unresolved'}, 'reason': {'type': 'string', 'minLength': 1}}}], 'description': 'Durable in-capture location for the excerpt. Missing means legacy free-text source; unresolved means a structured citation was attempted but could not be resolved.'}, 'captureId': {'type': 'string', 'minLength': 1, 'description': 'Durable clarity_capture id for this source. Use app-owned ids from the evidence index, never sandbox file paths.'}, 'evidenceId': {'type': 'string', 'minLength': 1, 'description': 'Stable id of the evidence unit from /workspace/captures/evidence-index.json when generation used that index.'}, 'attribution': {'type': 'string', 'minLength': 1, 'description': 'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP §3.2", "Slack #ops 2024-06-12"'}, 'resolutionStatus': {'enum': ['resolved', 'unresolved', 'legacy', 'manual'], 'type': 'string', 'description': 'Resolution status for the structured source link. Legacy sources may omit this field.'}, 'sourceConfidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in this individual source citation. "high" = direct quote at the locator, "medium" = strong nearby evidence, "low" = weak or inferred support.'}}}, 'minItems': 1, 'description': 'Evidence supporting the decision criteria.'}, 'nodeType': {'type': 'string', 'const': 'gateway'}, 'condition': {'type': 'string', 'minLength': 1, 'description': 'Decision criteria evaluated at this gateway. BPMN requires this on every branching gateway. Existing rows persisted with null/empty values parse as "unknown" via a read-side preprocess; producers should write a real condition string going forward.'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': 'Why this branching decision exists in the process.'}, 'readiness': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'null'}], 'description': 'Automation-readiness rating for this step. "high" = fully automatable today, "medium" = partially automatable or needs minor changes, "low" = blocked by manual review, judgement, or missing data.'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in the accuracy of this step given evidence quality and completeness. "high" = directly stated by multiple sources, "medium" = stated by one source or inferred from strong signals, "low" = inferred with significant assumptions.'}, 'exceptions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'exception', 'handling', 'frequency'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for this exception. Preserve it when the same exception is edited or regenerated. Example: "exception-po-mismatch"'}, 'handling': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'How the team responds to this exception. Null when the response was not documented.'}, 'exception': {'type': 'string', 'minLength': 1, 'description': 'A distinct failure mode that can happen at this step.'}, 'frequency': {'anyOf': [{'enum': ['rare', 'occasional', 'frequent'], 'type': 'string'}, {'type': 'null'}], 'description': 'Observed frequency. Null unless evidence explicitly supports rare, occasional, or frequent.'}}}, 'description': 'Distinct failure modes for this step in display order. Use an empty array when none are documented. Preserve each id when the same exception is edited or regenerated.'}, 'assumptions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Assumptions the LLM made when extracting this step that were not directly stated in captures. Null if none. Used by verification agents to flag risky inferences. Example: ["Invoices are reviewed within 24 hours of receipt"]'}, 'description': {'type': 'string', 'minLength': 1, 'description': 'Full prose describing the decision logic at this gateway.'}, 'nodeSubtype': {'enum': ['exclusive', 'parallel', 'inclusive'], 'type': 'string', 'description': 'BPMN gateway subtype. "exclusive" (XOR â\x80\x94 exactly one branch taken), "parallel" (AND â\x80\x94 all branches taken), "inclusive" (OR â\x80\x94 one or more branches taken).'}, 'targetSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['stepId', 'label', 'isDefault'], 'properties': {'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Human-readable label shown on the BPMN edge. For gateways, the outcome answer; for default flows, "Otherwise". Examples: "Approved", "> $5k", "Otherwise"'}, 'stepId': {'type': 'string', 'minLength': 1, 'description': 'Id of the step this edge points to. Must match an existing step.id in the same steps array. Example: "step-review-invoice"'}, 'isDefault': {'type': 'boolean', 'description': 'True on exactly one outgoing edge of an exclusive or inclusive gateway, marking the fallback taken when no other condition matches. False on all other edges.'}}}, 'description': 'Outgoing BPMN edges from this step. Empty array only on end events. Exclusive and inclusive gateways must have â\x89¥2 entries with exactly one isDefault: true.'}, 'linkedAgentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "Id of the Duvo Agent that performs this step. Set by a person in edit mode, never by a generating or postprocessing agent; the save route rejects an id that is not a live Agent on the process's team."}, 'openQuestions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Specific gaps in understanding that a follow-up capture should address. Null if none. Drives the next interview or document request. Example: ["Is there a backup approver when the AP manager is out of office?"]'}, 'extraCaptureNeeded': {'anyOf': [{'type': 'object', 'required': ['id', 'gap'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Id of the `clarity_proposal_extra_capture_request` row this slot points at. Created server-side by the agent after the LLM call; the LLM never produces this value.'}, 'gap': {'type': 'string', 'minLength': 1, 'description': 'Plain-language description of what about this step is unknown or under-specified, blocking automation. One short sentence. Example: "We don\'t know which fields the AP analyst copies from the invoice into NetSuite."'}, 'proposal': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'What the new capture should include in order to resolve the gap â\x80\x94 concrete actions, screens, or decisions the user should walk through. Optional: omit when no specific proposal can be inferred. Example: "Walk through reviewing one invoice in NetSuite end-to-end while narrating each field you check."'}}}, {'type': 'null'}]}, 'readinessRationale': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'One-sentence justification for the readiness rating, citing the specific signals that drove the choice. Example: "Requires human judgement on edge cases that are not documented in the captures."'}}}]}, {'oneOf': [{'type': 'object', 'required': ['id', 'targetSteps', 'title', 'action', 'role', 'system', 'input', 'output', 'exception', 'handling', 'assumptions', 'openQuestions', 'confidence', 'nodeType', 'nodeSubtype', 'description', 'rationale', 'sources', 'condition'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for the step. Referenced by targetSteps[].stepId and by postprocessing agents annotating specific steps. Example: "step-review-invoice"'}, 'role': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Performer of this step â\x80\x94 the specific job title, team, or system. Use "Duvo" for automated actions and "System" for system-triggered steps. Examples: "Finance Analyst", "Sales Operations", "Duvo", "System"'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Information or artifacts required to start this step. Null on start events or steps with no preconditions. Example: "Invoice PDF and matching purchase order number"'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Required node label used in lists and BPMN node labels. Structural markers use defaults such as "Start" and "End".'}, 'action': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Verb-led one-liner summarizing the concrete action performed. Example: "Reviews invoice line items in NetSuite against the purchase order."'}, 'output': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'What this step produces or updates. Null on pure waits or events that emit nothing. Example: "Approved invoice record in NetSuite with reviewer signature"'}, 'system': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'System, tool, or application used to perform this step. Null when the step is purely manual or is a decision/event with no associated tool. Examples: "NetSuite", "Gmail", "Excel", null'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['attribution', 'excerpt'], 'properties': {'excerpt': {'type': 'string', 'minLength': 1, 'description': 'Verbatim supporting text quoted from the capture, document, or transcript. Example: "We always wait for finance to sign off before sending the invoice."'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['type', 'messageIndex'], 'properties': {'type': {'type': 'string', 'const': 'transcript_message'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Optional epoch-millisecond timestamp for the transcript message when the capture supplied one.'}, 'messageIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index into the capture transcript message array. This is the durable key; timestampMs is only supplemental.'}}}, {'type': 'object', 'required': ['type', 'startOffset', 'endOffset'], 'properties': {'type': {'type': 'string', 'const': 'document_text_range'}, 'endLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text ends on pageNumber.', 'exclusiveMinimum': 0}, 'endOffset': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exclusive character offset into the stored capture text. Must be greater than startOffset.', 'exclusiveMinimum': 0}, 'startLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text starts on pageNumber.', 'exclusiveMinimum': 0}, 'pageNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based PDF page number when the stored capture has page metadata.', 'exclusiveMinimum': 0}, 'startOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based character offset into the stored capture text.'}}}, {'type': 'object', 'required': ['type', 'elementId'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element name as parsed from the XML. The element id is the durable key.'}, 'type': {'type': 'string', 'const': 'bpmn_element'}, 'elementId': {'type': 'string', 'minLength': 1, 'description': 'BPMN XML element id within an uploaded .bpmn document.'}, 'elementType': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element type as parsed from the XML, for example "bpmn:UserTask" or "bpmn:ExclusiveGateway".'}}}, {'type': 'object', 'required': ['type', 'timestampMs'], 'properties': {'type': {'type': 'string', 'const': 'screenshare_frame'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Epoch-millisecond frame timestamp matching a screenshare frame filename.'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'manual'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'unresolved'}, 'reason': {'type': 'string', 'minLength': 1}}}], 'description': 'Durable in-capture location for the excerpt. Missing means legacy free-text source; unresolved means a structured citation was attempted but could not be resolved.'}, 'captureId': {'type': 'string', 'minLength': 1, 'description': 'Durable clarity_capture id for this source. Use app-owned ids from the evidence index, never sandbox file paths.'}, 'evidenceId': {'type': 'string', 'minLength': 1, 'description': 'Stable id of the evidence unit from /workspace/captures/evidence-index.json when generation used that index.'}, 'attribution': {'type': 'string', 'minLength': 1, 'description': 'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP §3.2", "Slack #ops 2024-06-12"'}, 'resolutionStatus': {'enum': ['resolved', 'unresolved', 'legacy', 'manual'], 'type': 'string', 'description': 'Resolution status for the structured source link. Legacy sources may omit this field.'}, 'sourceConfidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in this individual source citation. "high" = direct quote at the locator, "medium" = strong nearby evidence, "low" = weak or inferred support.'}}}, 'description': 'Evidence supporting this event. Empty array allowed (structural markers carry no evidence); non-empty values must follow the source schema.'}, 'handling': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'How exceptions or escalations are handled â\x80\x94 escalation path, fallback action, or retry strategy. Null when no exception or no handling described. Example: "Escalate to AP manager via email and pause processing until resolved"'}, 'nodeType': {'type': 'string', 'const': 'event'}, 'condition': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Always null on events; included for shape compatibility across variants.'}, 'exception': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Known exceptions, errors, or failure modes observed in the captures for this step. Null when none were mentioned. Example: "Customer disputes line items or PO number does not match"'}, 'rationale': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': "Optional reason for the event's existence. May be null for structural markers."}, 'readiness': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'null'}], 'description': 'Automation-readiness rating for this step. "high" = fully automatable today, "medium" = partially automatable or needs minor changes, "low" = blocked by manual review, judgement, or missing data.'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in the accuracy of this step given evidence quality and completeness. "high" = directly stated by multiple sources, "medium" = stated by one source or inferred from strong signals, "low" = inferred with significant assumptions.'}, 'assumptions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Assumptions the LLM made when extracting this step that were not directly stated in captures. Null if none. Used by verification agents to flag risky inferences. Example: ["Invoices are reviewed within 24 hours of receipt"]'}, 'description': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Optional prose describing what happens at this event. May be null for structural markers.'}, 'nodeSubtype': {'enum': ['start', 'end', 'timer', 'message', 'escalation'], 'type': 'string', 'description': 'BPMN event subtype. "start" (entry trigger), "end" (terminal state), "timer" (time-based wait), "message" (external communication), "escalation" (route to higher authority).'}, 'targetSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['stepId', 'label', 'isDefault'], 'properties': {'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Human-readable label shown on the BPMN edge. For gateways, the outcome answer; for default flows, "Otherwise". Examples: "Approved", "> $5k", "Otherwise"'}, 'stepId': {'type': 'string', 'minLength': 1, 'description': 'Id of the step this edge points to. Must match an existing step.id in the same steps array. Example: "step-review-invoice"'}, 'isDefault': {'type': 'boolean', 'description': 'True on exactly one outgoing edge of an exclusive or inclusive gateway, marking the fallback taken when no other condition matches. False on all other edges.'}}}, 'description': 'Outgoing BPMN edges from this step. Empty array only on end events. Exclusive and inclusive gateways must have â\x89¥2 entries with exactly one isDefault: true.'}, 'linkedAgentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "Id of the Duvo Agent that performs this step. Set by a person in edit mode, never by a generating or postprocessing agent; the save route rejects an id that is not a live Agent on the process's team."}, 'openQuestions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Specific gaps in understanding that a follow-up capture should address. Null if none. Drives the next interview or document request. Example: ["Is there a backup approver when the AP manager is out of office?"]'}, 'extraCaptureNeeded': {'anyOf': [{'type': 'object', 'required': ['id', 'gap'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Id of the `clarity_proposal_extra_capture_request` row this slot points at. Created server-side by the agent after the LLM call; the LLM never produces this value.'}, 'gap': {'type': 'string', 'minLength': 1, 'description': 'Plain-language description of what about this step is unknown or under-specified, blocking automation. One short sentence. Example: "We don\'t know which fields the AP analyst copies from the invoice into NetSuite."'}, 'proposal': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'What the new capture should include in order to resolve the gap â\x80\x94 concrete actions, screens, or decisions the user should walk through. Optional: omit when no specific proposal can be inferred. Example: "Walk through reviewing one invoice in NetSuite end-to-end while narrating each field you check."'}}}, {'type': 'null'}]}, 'readinessRationale': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'One-sentence justification for the readiness rating, citing the specific signals that drove the choice. Example: "Requires human judgement on edge cases that are not documented in the captures."'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'targetSteps', 'title', 'action', 'role', 'system', 'input', 'output', 'exception', 'handling', 'assumptions', 'openQuestions', 'confidence', 'nodeType', 'nodeSubtype', 'description', 'rationale', 'sources', 'condition'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for the step. Referenced by targetSteps[].stepId and by postprocessing agents annotating specific steps. Example: "step-review-invoice"'}, 'role': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Performer of this step â\x80\x94 the specific job title, team, or system. Use "Duvo" for automated actions and "System" for system-triggered steps. Examples: "Finance Analyst", "Sales Operations", "Duvo", "System"'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Information or artifacts required to start this step. Null on start events or steps with no preconditions. Example: "Invoice PDF and matching purchase order number"'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Required node label used in lists and BPMN node labels. Structural markers use defaults such as "Start" and "End".'}, 'action': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Verb-led one-liner summarizing the concrete action performed. Example: "Reviews invoice line items in NetSuite against the purchase order."'}, 'output': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'What this step produces or updates. Null on pure waits or events that emit nothing. Example: "Approved invoice record in NetSuite with reviewer signature"'}, 'system': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'System, tool, or application used to perform this step. Null when the step is purely manual or is a decision/event with no associated tool. Examples: "NetSuite", "Gmail", "Excel", null'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['attribution', 'excerpt'], 'properties': {'excerpt': {'type': 'string', 'minLength': 1, 'description': 'Verbatim supporting text quoted from the capture, document, or transcript. Example: "We always wait for finance to sign off before sending the invoice."'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['type', 'messageIndex'], 'properties': {'type': {'type': 'string', 'const': 'transcript_message'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Optional epoch-millisecond timestamp for the transcript message when the capture supplied one.'}, 'messageIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index into the capture transcript message array. This is the durable key; timestampMs is only supplemental.'}}}, {'type': 'object', 'required': ['type', 'startOffset', 'endOffset'], 'properties': {'type': {'type': 'string', 'const': 'document_text_range'}, 'endLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text ends on pageNumber.', 'exclusiveMinimum': 0}, 'endOffset': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exclusive character offset into the stored capture text. Must be greater than startOffset.', 'exclusiveMinimum': 0}, 'startLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text starts on pageNumber.', 'exclusiveMinimum': 0}, 'pageNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based PDF page number when the stored capture has page metadata.', 'exclusiveMinimum': 0}, 'startOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based character offset into the stored capture text.'}}}, {'type': 'object', 'required': ['type', 'elementId'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element name as parsed from the XML. The element id is the durable key.'}, 'type': {'type': 'string', 'const': 'bpmn_element'}, 'elementId': {'type': 'string', 'minLength': 1, 'description': 'BPMN XML element id within an uploaded .bpmn document.'}, 'elementType': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element type as parsed from the XML, for example "bpmn:UserTask" or "bpmn:ExclusiveGateway".'}}}, {'type': 'object', 'required': ['type', 'timestampMs'], 'properties': {'type': {'type': 'string', 'const': 'screenshare_frame'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Epoch-millisecond frame timestamp matching a screenshare frame filename.'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'manual'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'unresolved'}, 'reason': {'type': 'string', 'minLength': 1}}}], 'description': 'Durable in-capture location for the excerpt. Missing means legacy free-text source; unresolved means a structured citation was attempted but could not be resolved.'}, 'captureId': {'type': 'string', 'minLength': 1, 'description': 'Durable clarity_capture id for this source. Use app-owned ids from the evidence index, never sandbox file paths.'}, 'evidenceId': {'type': 'string', 'minLength': 1, 'description': 'Stable id of the evidence unit from /workspace/captures/evidence-index.json when generation used that index.'}, 'attribution': {'type': 'string', 'minLength': 1, 'description': 'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP §3.2", "Slack #ops 2024-06-12"'}, 'resolutionStatus': {'enum': ['resolved', 'unresolved', 'legacy', 'manual'], 'type': 'string', 'description': 'Resolution status for the structured source link. Legacy sources may omit this field.'}, 'sourceConfidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in this individual source citation. "high" = direct quote at the locator, "medium" = strong nearby evidence, "low" = weak or inferred support.'}}}, 'minItems': 1, 'description': "Evidence supporting this step's existence and details. At least one source is required â\x80\x94 every step must trace back to something in the captures."}, 'handling': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'How exceptions or escalations are handled â\x80\x94 escalation path, fallback action, or retry strategy. Null when no exception or no handling described. Example: "Escalate to AP manager via email and pause processing until resolved"'}, 'nodeType': {'type': 'string', 'const': 'task'}, 'condition': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Optional precondition that gates this task. Null when the task is unconditional. Example: "Only when invoice total exceeds $10,000"'}, 'exception': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Known exceptions, errors, or failure modes observed in the captures for this step. Null when none were mentioned. Example: "Customer disputes line items or PO number does not match"'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': 'Why this step exists in the process â\x80\x94 its purpose or business reason. Used by downstream agents to assess whether the step is essential or removable. Example: "Catches mispriced line items before they reach the customer and prevents downstream credit notes."'}, 'readiness': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'null'}], 'description': 'Automation-readiness rating for this step. "high" = fully automatable today, "medium" = partially automatable or needs minor changes, "low" = blocked by manual review, judgement, or missing data.'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in the accuracy of this step given evidence quality and completeness. "high" = directly stated by multiple sources, "medium" = stated by one source or inferred from strong signals, "low" = inferred with significant assumptions.'}, 'assumptions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Assumptions the LLM made when extracting this step that were not directly stated in captures. Null if none. Used by verification agents to flag risky inferences. Example: ["Invoices are reviewed within 24 hours of receipt"]'}, 'description': {'type': 'string', 'minLength': 1, 'description': 'Full prose paragraph describing what happens in this step in natural language. Used for documentation reconstruction. Example: "Finance reviews the invoice in NetSuite, checking line item accuracy and matching against the purchase order before flagging for approval."'}, 'nodeSubtype': {'enum': ['user', 'service', 'send', 'receive', 'manual', 'businessRule', 'script'], 'type': 'string', 'description': 'BPMN task subtype. "user" (human work), "service" (automated/API call), "send"/"receive" (messaging), "manual" (offline physical work), "businessRule" (rule engine), "script" (code execution).'}, 'targetSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['stepId', 'label', 'isDefault'], 'properties': {'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Human-readable label shown on the BPMN edge. For gateways, the outcome answer; for default flows, "Otherwise". Examples: "Approved", "> $5k", "Otherwise"'}, 'stepId': {'type': 'string', 'minLength': 1, 'description': 'Id of the step this edge points to. Must match an existing step.id in the same steps array. Example: "step-review-invoice"'}, 'isDefault': {'type': 'boolean', 'description': 'True on exactly one outgoing edge of an exclusive or inclusive gateway, marking the fallback taken when no other condition matches. False on all other edges.'}}}, 'description': 'Outgoing BPMN edges from this step. Empty array only on end events. Exclusive and inclusive gateways must have â\x89¥2 entries with exactly one isDefault: true.'}, 'linkedAgentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "Id of the Duvo Agent that performs this step. Set by a person in edit mode, never by a generating or postprocessing agent; the save route rejects an id that is not a live Agent on the process's team."}, 'openQuestions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Specific gaps in understanding that a follow-up capture should address. Null if none. Drives the next interview or document request. Example: ["Is there a backup approver when the AP manager is out of office?"]'}, 'extraCaptureNeeded': {'anyOf': [{'type': 'object', 'required': ['id', 'gap'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Id of the `clarity_proposal_extra_capture_request` row this slot points at. Created server-side by the agent after the LLM call; the LLM never produces this value.'}, 'gap': {'type': 'string', 'minLength': 1, 'description': 'Plain-language description of what about this step is unknown or under-specified, blocking automation. One short sentence. Example: "We don\'t know which fields the AP analyst copies from the invoice into NetSuite."'}, 'proposal': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'What the new capture should include in order to resolve the gap â\x80\x94 concrete actions, screens, or decisions the user should walk through. Optional: omit when no specific proposal can be inferred. Example: "Walk through reviewing one invoice in NetSuite end-to-end while narrating each field you check."'}}}, {'type': 'null'}]}, 'readinessRationale': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'One-sentence justification for the readiness rating, citing the specific signals that drove the choice. Example: "Requires human judgement on edge cases that are not documented in the captures."'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'targetSteps', 'title', 'action', 'role', 'system', 'input', 'output', 'exception', 'handling', 'assumptions', 'openQuestions', 'confidence', 'nodeType', 'nodeSubtype', 'description', 'rationale', 'sources', 'condition'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable identifier for the step. Referenced by targetSteps[].stepId and by postprocessing agents annotating specific steps. Example: "step-review-invoice"'}, 'role': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Performer of this step â\x80\x94 the specific job title, team, or system. Use "Duvo" for automated actions and "System" for system-triggered steps. Examples: "Finance Analyst", "Sales Operations", "Duvo", "System"'}, 'input': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Information or artifacts required to start this step. Null on start events or steps with no preconditions. Example: "Invoice PDF and matching purchase order number"'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Required node label used in lists and BPMN node labels. Structural markers use defaults such as "Start" and "End".'}, 'action': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Verb-led one-liner summarizing the concrete action performed. Example: "Reviews invoice line items in NetSuite against the purchase order."'}, 'output': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'What this step produces or updates. Null on pure waits or events that emit nothing. Example: "Approved invoice record in NetSuite with reviewer signature"'}, 'system': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'System, tool, or application used to perform this step. Null when the step is purely manual or is a decision/event with no associated tool. Examples: "NetSuite", "Gmail", "Excel", null'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['attribution', 'excerpt'], 'properties': {'excerpt': {'type': 'string', 'minLength': 1, 'description': 'Verbatim supporting text quoted from the capture, document, or transcript. Example: "We always wait for finance to sign off before sending the invoice."'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['type', 'messageIndex'], 'properties': {'type': {'type': 'string', 'const': 'transcript_message'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Optional epoch-millisecond timestamp for the transcript message when the capture supplied one.'}, 'messageIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index into the capture transcript message array. This is the durable key; timestampMs is only supplemental.'}}}, {'type': 'object', 'required': ['type', 'startOffset', 'endOffset'], 'properties': {'type': {'type': 'string', 'const': 'document_text_range'}, 'endLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text ends on pageNumber.', 'exclusiveMinimum': 0}, 'endOffset': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exclusive character offset into the stored capture text. Must be greater than startOffset.', 'exclusiveMinimum': 0}, 'startLine': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based line number where the cited text starts on pageNumber.', 'exclusiveMinimum': 0}, 'pageNumber': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional one-based PDF page number when the stored capture has page metadata.', 'exclusiveMinimum': 0}, 'startOffset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based character offset into the stored capture text.'}}}, {'type': 'object', 'required': ['type', 'elementId'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element name as parsed from the XML. The element id is the durable key.'}, 'type': {'type': 'string', 'const': 'bpmn_element'}, 'elementId': {'type': 'string', 'minLength': 1, 'description': 'BPMN XML element id within an uploaded .bpmn document.'}, 'elementType': {'type': 'string', 'minLength': 1, 'description': 'Optional BPMN element type as parsed from the XML, for example "bpmn:UserTask" or "bpmn:ExclusiveGateway".'}}}, {'type': 'object', 'required': ['type', 'timestampMs'], 'properties': {'type': {'type': 'string', 'const': 'screenshare_frame'}, 'timestampMs': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Epoch-millisecond frame timestamp matching a screenshare frame filename.'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'manual'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'unresolved'}, 'reason': {'type': 'string', 'minLength': 1}}}], 'description': 'Durable in-capture location for the excerpt. Missing means legacy free-text source; unresolved means a structured citation was attempted but could not be resolved.'}, 'captureId': {'type': 'string', 'minLength': 1, 'description': 'Durable clarity_capture id for this source. Use app-owned ids from the evidence index, never sandbox file paths.'}, 'evidenceId': {'type': 'string', 'minLength': 1, 'description': 'Stable id of the evidence unit from /workspace/captures/evidence-index.json when generation used that index.'}, 'attribution': {'type': 'string', 'minLength': 1, 'description': 'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP §3.2", "Slack #ops 2024-06-12"'}, 'resolutionStatus': {'enum': ['resolved', 'unresolved', 'legacy', 'manual'], 'type': 'string', 'description': 'Resolution status for the structured source link. Legacy sources may omit this field.'}, 'sourceConfidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in this individual source citation. "high" = direct quote at the locator, "medium" = strong nearby evidence, "low" = weak or inferred support.'}}}, 'minItems': 1, 'description': 'Evidence supporting the decision criteria.'}, 'handling': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'How exceptions or escalations are handled â\x80\x94 escalation path, fallback action, or retry strategy. Null when no exception or no handling described. Example: "Escalate to AP manager via email and pause processing until resolved"'}, 'nodeType': {'type': 'string', 'const': 'gateway'}, 'condition': {'type': 'string', 'minLength': 1, 'description': 'Decision criteria evaluated at this gateway. BPMN requires this on every branching gateway. Existing rows persisted with null/empty values parse as "unknown" via a read-side preprocess; producers should write a real condition string going forward.'}, 'exception': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Known exceptions, errors, or failure modes observed in the captures for this step. Null when none were mentioned. Example: "Customer disputes line items or PO number does not match"'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': 'Why this branching decision exists in the process.'}, 'readiness': {'anyOf': [{'enum': ['low', 'medium', 'high'], 'type': 'string'}, {'type': 'null'}], 'description': 'Automation-readiness rating for this step. "high" = fully automatable today, "medium" = partially automatable or needs minor changes, "low" = blocked by manual review, judgement, or missing data.'}, 'confidence': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Confidence in the accuracy of this step given evidence quality and completeness. "high" = directly stated by multiple sources, "medium" = stated by one source or inferred from strong signals, "low" = inferred with significant assumptions.'}, 'assumptions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Assumptions the LLM made when extracting this step that were not directly stated in captures. Null if none. Used by verification agents to flag risky inferences. Example: ["Invoices are reviewed within 24 hours of receipt"]'}, 'description': {'type': 'string', 'minLength': 1, 'description': 'Full prose describing the decision logic at this gateway.'}, 'nodeSubtype': {'enum': ['exclusive', 'parallel', 'inclusive'], 'type': 'string', 'description': 'BPMN gateway subtype. "exclusive" (XOR â\x80\x94 exactly one branch taken), "parallel" (AND â\x80\x94 all branches taken), "inclusive" (OR â\x80\x94 one or more branches taken).'}, 'targetSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['stepId', 'label', 'isDefault'], 'properties': {'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Human-readable label shown on the BPMN edge. For gateways, the outcome answer; for default flows, "Otherwise". Examples: "Approved", "> $5k", "Otherwise"'}, 'stepId': {'type': 'string', 'minLength': 1, 'description': 'Id of the step this edge points to. Must match an existing step.id in the same steps array. Example: "step-review-invoice"'}, 'isDefault': {'type': 'boolean', 'description': 'True on exactly one outgoing edge of an exclusive or inclusive gateway, marking the fallback taken when no other condition matches. False on all other edges.'}}}, 'description': 'Outgoing BPMN edges from this step. Empty array only on end events. Exclusive and inclusive gateways must have â\x89¥2 entries with exactly one isDefault: true.'}, 'linkedAgentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "Id of the Duvo Agent that performs this step. Set by a person in edit mode, never by a generating or postprocessing agent; the save route rejects an id that is not a live Agent on the process's team."}, 'openQuestions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Specific gaps in understanding that a follow-up capture should address. Null if none. Drives the next interview or document request. Example: ["Is there a backup approver when the AP manager is out of office?"]'}, 'extraCaptureNeeded': {'anyOf': [{'type': 'object', 'required': ['id', 'gap'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Id of the `clarity_proposal_extra_capture_request` row this slot points at. Created server-side by the agent after the LLM call; the LLM never produces this value.'}, 'gap': {'type': 'string', 'minLength': 1, 'description': 'Plain-language description of what about this step is unknown or under-specified, blocking automation. One short sentence. Example: "We don\'t know which fields the AP analyst copies from the invoice into NetSuite."'}, 'proposal': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'What the new capture should include in order to resolve the gap â\x80\x94 concrete actions, screens, or decisions the user should walk through. Optional: omit when no specific proposal can be inferred. Example: "Walk through reviewing one invoice in NetSuite end-to-end while narrating each field you check."'}}}, {'type': 'null'}]}, 'readinessRationale': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'One-sentence justification for the readiness rating, citing the specific signals that drove the choice. Example: "Requires human judgement on edge cases that are not documented in the captures."'}}, 'additionalProperties': False}]}]}, 'minItems': 1}, 'summary': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'One short paragraph (3-5 sentences) describing the captured process at a glance. Surfaced at the top of the current-process tab so reviewers can orient themselves before scanning the steps. Example: "Customers order beer at the bar; the bartender greets them, picks an option matching their preference, pours and garnishes the glass, then rings the order through the POS before serving."'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}, 'projectedImpact': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}], 'description': 'Answer-first, MECE-structured business case. 4-8 sentences of prose + one markdown assumptions table. Null when team context is insufficient to produce any quantitative or qualitative assessment.'}, 'baselineSnapshotId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'clarityCurrentProcessId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0}, 'search': {'type': 'string'}, 'filters': {'type': 'object', 'default': {}, 'properties': {'labels': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'status': {'type': 'array', 'items': {'enum': ['all', 'pending', 'processing', 'needs_input', 'postponed', 'needs_review', 'resolved', 'canceled', 'claimed', 'completed', 'failed'], 'type': 'string'}}, 'priority': {'type': 'array', 'items': {'enum': ['none', 'medium', 'high'], 'type': 'string'}}, 'json_data': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'operator'], 'properties': {'path': {'type': 'string', 'pattern': '^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$'}, 'value': {'anyOf': [{'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}]}, 'maxItems': 100, 'minItems': 1}]}, 'operator': {'enum': ['equals', 'notEquals', 'in', 'notIn', 'gt', 'gte', 'lt', 'lte', 'contains', 'isSet', 'isNotSet'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 12}, 'created_at_to': {'type': 'string'}, 'updated_at_to': {'type': 'string'}, 'issue_severity': {'type': 'array', 'items': {'enum': ['critical', 'medium'], 'type': 'string'}}, 'created_at_from': {'type': 'string'}, 'updated_at_from': {'type': 'string'}, 'awaiting_my_approval': {'type': 'boolean'}}}, 'sort_by': {'enum': ['created_at', 'updated_at', 'postponed_to'], 'type': 'string', 'default': 'created_at'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'count_only': {'type': 'boolean', 'description': 'Skip Case row selection, enrichment, and transformation. The normal response shape contains an empty cases array and the matching total.'}, 'sort_order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'message'], 'properties': {'message': {'type': 'string', 'maxLength': 15000, 'minLength': 1}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'attachments': {'type': 'array', 'items': {'type': 'object', 'required': ['attachment_id'], 'properties': {'attachment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'An attachment_id returned by upload-urls'}}}, 'maxItems': 5, 'description': 'Attachments to hand the agent, uploaded beforehand via the upload-urls endpoint (max 5)'}, 'from_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'selected_element': {'type': 'object', 'required': ['selector', 'label', 'tag_name', 'outer_html'], 'properties': {'text': {'type': 'string', 'maxLength': 500}, 'label': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'point': {'type': 'object', 'required': ['x_ratio', 'y_ratio'], 'properties': {'x_ratio': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'y_ratio': {'type': 'number', 'maximum': 1, 'minimum': 0}}}, 'selector': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'tag_name': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'outer_html': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'openui_node': {'type': 'object', 'required': ['statement', 'component'], 'properties': {'source': {'type': 'string', 'maxLength': 2000}, 'component': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'statement': {'type': 'string', 'maxLength': 200, 'minLength': 1}}}}}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'ID of the invitation to email.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'frontendUrl': {'type': 'string', 'format': 'uri', 'description': 'Deprecated. Accepted for backward compatibility and IGNORED: the accept link is always built from the server-configured app origin, so a caller cannot point invitation emails at another host.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'revision_id', 'agent_id', 'build_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent to bind in the revision'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build to reference for the agent'}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'revision_id', 'case_queue_id'], 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}], 'description': 'Per-revision name override (null clears; omit to keep current)'}, 'enabled': {'type': 'boolean', 'description': 'Whether routing is enabled (omit to keep current; default true when new)'}, 'agent_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Agent the queue routes to (null clears routing; omit to keep current)'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Per-revision description override (null clears; omit to keep current)'}, 'revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Revision ID'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Queue to route in the revision'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId', 'parentId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'parentId': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['org_id', 'priorities'], 'properties': {'org_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Organization whose landscape is being assessed.'}, 'priorities': {'type': 'array', 'items': {'type': 'object', 'required': ['node_id', 'priority'], 'properties': {'node_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Process landscape node receiving the assessment.'}, 'priority': {'anyOf': [{'enum': ['high', 'medium', 'low'], 'type': 'string'}, {'type': 'null'}], 'description': 'Priority to set, or null to clear the assessment.'}, 'reasoning': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'description': 'Brief rationale for the priority.'}}}, 'maxItems': 200, 'minItems': 1, 'description': 'Process priority updates applied atomically.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'commentId', 'resolved'], 'properties': {'resolved': {'type': 'boolean'}, 'commentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['processId', 'connectionInstanceId', 'bpmnXml'], 'properties': {'bpmnXml': {'type': 'string', 'maxLength': 5000000, 'minLength': 1}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'processId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'processOwnerRef': {'type': 'string', 'pattern': '^\\/glossary\\/[0-9a-zA-Z_-]+$'}, 'processApproverRef': {'type': 'string', 'pattern': '^\\/glossary\\/[0-9a-zA-Z_-]+$'}, 'connectionInstanceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['provider'], 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'provider': {'type': 'string', 'description': "OAuth provider slug (e.g. 'google', 'gmail', 'googlesheets', 'outlook'). Must match a configured native OAuth provider."}, 'return_url': {'type': 'string', 'description': "Where to send the user's browser after OAuth completes."}, 'reconnect_instance_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'When set, the OAuth flow will update the existing connection in place rather than creating a new one.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'message': {'type': 'string', 'description': 'Optional initial message to start the run with (e.g. a trigger payload or user instruction)'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The agent ID to run'}, 'sandbox_id': {'type': 'string', 'description': 'Optional sandbox ID with pre-uploaded files'}, 'webhook_url': {'type': 'string', 'format': 'uri', 'description': 'Webhook URL to POST events to (human_request, run_completed, run_failed, run_interrupted)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'conversation_id'], 'properties': {'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'conversation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['process_id', 'kind'], 'properties': {'kind': {'enum': ['current_process', 'transformation_proposal'], 'type': 'string', 'description': 'Snapshot kind to list'}, 'process_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process id'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId'], 'properties': {'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'partial_text': {'type': 'string', 'description': 'The assistant text streamed so far, kept in the conversation as the partial reply. Omit when calling from an API client without streaming state.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The run's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'case_id', 'label_ids'], 'properties': {'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'label_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'labelIds'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'labelIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'maxItems': 50, 'minItems': 1}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'build_id', 'integration_id', 'connection_id'], 'properties': {'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Agent ID'}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Build ID'}, 'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Connection ID to unpin'}, 'integration_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Integration ID (catalog integration ID or slot ID from the list response)'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id'], 'properties': {'name': {'type': 'string', 'description': 'New agent display name.'}, 'pinned': {'type': 'boolean', 'description': 'Pin the agent to the top of your agents list (true) or unpin it (false). Per-user â\x80\x94 each viewer has their own pin. A team on Automations has no agents list for a pin to order, so a pin or unpin there is refused with a 409.'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'thread_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'Thread id to associate with the agent, or null to clear.'}, 'slack_enabled': {'type': 'boolean', 'description': 'Whether the agent is reachable via Slack.'}, 'agentic_memory_enabled': {'type': 'boolean', 'description': 'Toggle agentic memory for the agent.'}, 'microsoft_teams_enabled': {'type': 'boolean', 'description': 'Whether the agent is reachable via Microsoft Teams.'}, 'computer_use_vpn_config_id': {'anyOf': [{'anyOf': [{'type': 'string', 'const': 'direct'}, {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}]}, {'type': 'null'}], 'description': '"direct" to durably pin direct internet (no VPN, immune to future team-default changes), a VPN config UUID to pin that network, or null to follow the team default.'}, 'computer_use_sandbox_template_id': {'anyOf': [{'anyOf': [{'type': 'string', 'const': 'standard'}, {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}]}, {'type': 'null'}], 'description': '"standard" to durably pin the standard Duvo desktop (immune to future team-default changes), a template UUID to pin that desktop, or null to follow the team default.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'trigger_id'], 'properties': {'enabled': {'type': 'boolean', 'description': 'Whether the trigger is active. Disabled triggers do not dispatch runs.'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'trigger_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case trigger's unique identifier"}, 'concurrency': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'null'}], 'description': "Concurrency cap for the trigger's queue. The cap is queue-wide, so this affects every Agent working the queue, not just this trigger. Only 1 (run cases one at a time) or null (reset the whole queue's cap to the platform default) can be set here; higher caps are configured per-queue via PATCH /v2/admin/case-queues/{queueId}/concurrency. Omit to leave the current value unchanged."}, 'case_queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Queue whose new cases should trigger this agent'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['folder_id'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'New folder name'}, 'folder_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The folder's unique identifier"}, 'parent_folder_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'New parent folder ID. Pass null to move the folder to the root level.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'New human-readable automation name.'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'order', 'hidden'], 'properties': {'order': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50, 'description': 'Left-group tab keys in render order'}, 'hidden': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50, 'description': 'Native tab keys the user removed from the bar'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['case_id'], 'properties': {'data': {'type': 'string', 'description': 'New free-form data payload handed to the agent when the case is claimed. Mutually exclusive with `json_data`.'}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'New case title (1â\x80\x93500 characters).'}, 'case_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case's unique identifier"}, 'json_data': {'type': 'object', 'description': 'New structured payload for a case on a queue that has a Case schema. Validated against that schema and mutually exclusive with `data`.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'rubric_id'], 'properties': {'title': {'type': 'string', 'maxLength': 80, 'minLength': 3, 'description': 'Short, human-readable Pass/Fail rubric title.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'rubric_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The case-level rubric's unique identifier"}, 'description': {'type': 'string', 'maxLength': 400, 'minLength': 20, 'description': 'A 1-2 sentence Pass condition phrased as a question.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['folderId', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'New folder name.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'folderId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Folder to rename.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'content'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The clarity process ID'}, 'content': {'type': 'string', 'maxLength': 5000, 'minLength': 1, 'description': 'Replacement automation guidance for the process.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'ownerLabel': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'nodeId', 'personId'], 'properties': {'role': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'nodeId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'A process landscape node that is linked to a real process.'}, 'teamId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'personId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The person entry to change, as returned by listClarityLandscapeNodePeople.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'interviewId', 'title'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'title': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'interviewId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'The organization interview ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Clarity process id'}, 'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'New process name'}, 'status': {'enum': ['complete'], 'type': 'string', 'description': 'Mark a review-stage process complete'}, 'visibility': {'enum': ['team', 'restricted'], 'type': 'string', 'description': 'Process visibility within the team'}, 'customPrompt': {'anyOf': [{'type': 'string', 'maxLength': 5000}, {'type': 'null'}], 'description': 'Process-specific guidance, or null to clear it'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'labelId'], 'properties': {'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'value': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'labelId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'colorHue': {'type': 'integer', 'maximum': 360, 'minimum': 0}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orgId', 'process_link_id'], 'properties': {'type': {'enum': ['hands_off_to', 'shares_step_with', 'variant_of'], 'type': 'string', 'description': 'Relationship type between the source process node and target process node'}, 'orgId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'state': {'enum': ['suggested', 'confirmed'], 'type': 'string', 'description': 'Whether the link is suggested by Duvo or confirmed by a user'}, 'confidence': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}], 'description': 'Confidence score from 0 to 1, or null to clear it'}, 'source_node_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Replacement hierarchy node id for the source process'}, 'target_node_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Replacement hierarchy node id for the target process'}, 'process_link_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Unique process-link identifier'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'enabled'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Clarity process ID.'}, 'enabled': {'type': 'boolean', 'description': 'Whether public process sharing is enabled.'}, 'proposalShareEnabled': {'type': 'boolean', 'description': 'Whether the automation proposal is included. Public sharing must already be enabled when only changing this setting.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'industry': {'anyOf': [{'type': 'string', 'maxLength': 255}, {'type': 'null'}]}, 'language': {'enum': ['cs', 'de', 'en', 'en-GB', 'es', 'es-MX', 'fr', 'hu', 'pl', 'pt', 'pt-BR', 'sk', 'sl', 'uk'], 'type': 'string'}, 'teamSize': {'type': 'integer', 'maximum': 10000, 'exclusiveMinimum': 0}, 'companyName': {'anyOf': [{'type': 'string', 'maxLength': 255}, {'type': 'null'}]}, 'annualRevenue': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}, 'averageHourlyRate': {'type': 'number', 'maximum': 10000, 'exclusiveMinimum': 0}, 'emailReportsEnabled': {'type': 'boolean'}, 'emailReportIncludeSummary': {'type': 'boolean'}, 'emailReportIncludeCaptures': {'type': 'boolean'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automationId', 'fieldId', 'value'], 'properties': {'value': {'anyOf': [{'$ref': '#/definitions/AutomationConfigJsonValue'}, {'type': 'null'}]}, 'fieldId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Config field ID'}, 'automationId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Automation ID'}}, 'definitions': {'AutomationConfigJsonValue': {'id': 'AutomationConfigJsonValue', 'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}, {'type': 'array', 'items': {'$ref': '#/definitions/AutomationConfigJsonValue'}}, {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'$ref': '#/definitions/AutomationConfigJsonValue'}}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['automation_id', 'field_id'], 'properties': {'type': {'enum': ['freeText', 'identifier', 'number', 'select', 'multiSelect', 'list', 'orderedList', 'personList'], 'type': 'string', 'description': 'New value type, only for a field added through the API that has no answer yet'}, 'label': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short name for the field, shown as its row heading'}, 'options': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1, 'description': 'Select and multiSelect fields only; replaces the whole list'}, 'section': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Section the field is grouped under'}, {'type': 'null'}], 'description': 'Section to move the field to the end of, or null for none'}, 'field_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The config field's unique identifier"}, 'question': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'New question; a reworded question gets a new version'}, 'required': {'type': 'boolean', 'description': 'Whether the field must be filled'}, 'automation_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The automation's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['connection_id'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'shared': {'type': 'boolean'}, 'headers': {'anyOf': [{'type': 'object', 'properties': {'secret': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'plaintext': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}}, {'type': 'null'}]}, 'server_url': {'type': 'string', 'format': 'uri'}, 'auth_method': {'enum': ['url', 'oauth', 'apikey', 'headers'], 'type': 'string'}, 'connection_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Connection ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['userId', 'id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'domain': {'type': 'string', 'minLength': 1}, 'shared': {'type': 'boolean'}, 'userId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'password': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}, 'username': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}, 'otp_secret': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'rubricId'], 'properties': {'title': {'type': 'string', 'maxLength': 80, 'minLength': 3, 'description': 'Short, human-readable Pass/Fail rubric title.'}, 'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier (Assignment ID)"}, 'rubricId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The custom rubric's unique identifier"}, 'description': {'type': 'string', 'maxLength': 400, 'minLength': 20, 'description': 'A 1-2 sentence Pass condition phrased as a question.'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': "Path of the file relative to the team's storage root"}, 'content': {'type': 'string', 'description': 'New UTF-8 text content for the file'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['artifactId', 'title'], 'properties': {'title': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'artifactId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "New queue name. A standalone queue's name must be unique within the team, and a queue inside an automation's name must be unique within that automation. Queue names are not versioned, so this is the canonical name on any Automations workspace team, with or without revisions. A revision carrying a per-revision name override applies it over this one when that revision is activated."}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'folder_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'New folder id, or null to move to the root.'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'New description, or null to clear.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id'], 'properties': {'frozen': {'type': 'boolean', 'description': 'Close the schema document to change. The queue must already have a schema.'}, 'guarded': {'type': 'boolean', 'description': 'Require every new case on this queue to be typed. When on and the queue has no schema yet, the producing agent must declare one before it can add cases.'}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queue_id', 'label_id', 'value'], 'properties': {'key': {'type': 'string'}, 'value': {'type': 'string', 'minLength': 1}, 'label_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The label's unique identifier"}, 'queue_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The queue's unique identifier"}, 'color_hue': {'type': 'integer', 'maximum': 360, 'minimum': 0}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['build_id'], 'properties': {'config': {'type': 'object', 'description': 'Build configuration object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'build_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The build's unique identifier"}, 'handoverTo': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': 'The single agent or code step to run after this one completes ("Handover to"). Null clears it; omit to leave it unchanged. Mutually exclusive with @-mention handovers in the AOP.'}, 'revision_name': {'anyOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'null'}], 'description': 'Optional user-defined name for this revision. Pass null to clear.'}, 'handoverOptions': {'anyOf': [{'type': 'object', 'required': ['targetAgentIds', 'required'], 'properties': {'required': {'type': 'boolean', 'description': 'When true, a run that exits cleanly without requesting a handover fails'}, 'targetAgentIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'minItems': 1, 'description': "Steps in the same automation this code step's program may request"}}}, {'type': 'null'}], 'description': 'Code steps only. The targets the program may request, and whether it must. Null clears them; omit to leave unchanged. Mutually exclusive with handoverTo in one request.'}, 'handoverTargetIds': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, 'description': 'Agent IDs that this agent can hand over work to'}, 'revision_description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional user-defined description for this revision. Pass null to clear.'}, 'selected_automation_revision_id': {'anyOf': [{'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$'}, {'type': 'null'}], 'description': "The automation revision this edit is being made at. Pass a draft and the edit is folded into that draft itself; pass the active revision and the edit lands on a draft branched from it. A historic revision is rejected â\x80\x94 it cannot be activated from without an explicit rebase. A revision belonging to a different automation is ignored, and the edit targets the automation the addressed agent belongs to. Omit to target the automation's active revision."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agent_id', 'schedule_id'], 'properties': {'day': {'anyOf': [{'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}, {'type': 'null'}]}, 'cron': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'time': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enabled': {'type': 'boolean'}, 'agent_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'timezone': {'type': 'string'}, 'frequency': {'enum': ['every_5_minutes', 'every_15_minutes', 'hourly', 'daily', 'workday', 'weekly', 'monthly', 'custom'], 'type': 'string'}, 'recurring': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'schedule_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The schedule's unique identifier"}, 'day_of_month': {'anyOf': [{'type': 'integer', 'maximum': 31, 'minimum': 1}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'name': {'type': 'string', 'maxLength': 128, 'minLength': 1}, 'shared': {'type': 'boolean'}, 'values': {'type': 'object', 'propertyNames': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 128, 'minLength': 1}, 'additionalProperties': {'type': 'string', 'maxLength': 65536, 'minLength': 1}}, 'add_values': {'type': 'object', 'propertyNames': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 128, 'minLength': 1}, 'additionalProperties': {'type': 'string', 'maxLength': 65536, 'minLength': 1}}, 'remove_keys': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 128, 'minLength': 1}, 'minItems': 1}, 'rename_keys': {'type': 'object', 'propertyNames': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 128, 'minLength': 1}, 'additionalProperties': {'type': 'string', 'pattern': '^[A-Z_][A-Z0-9_]*$', 'maxLength': 128, 'minLength': 1}}, 'service_slug': {'anyOf': [{'type': 'string', 'maxLength': 64, 'minLength': 1}, {'type': 'null'}]}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id', 'use_in_ask_duvo'], 'properties': {'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}, 'use_in_ask_duvo': {'type': 'boolean'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_id', 'path', 'content'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Relative path to the file inside the skill, e.g. SKILL.md.'}, 'content': {'type': 'string', 'description': 'New UTF-8 text content for the file.'}, 'skill_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_revision_id'], 'properties': {'revision_name': {'anyOf': [{'type': 'string', 'maxLength': 80, 'minLength': 1}, {'type': 'null'}], 'description': 'Optional user-defined name for this revision. Pass null to clear.'}, 'skill_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill revision ID.'}, 'revision_description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional user-defined description for this revision. Pass null to clear.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skill_revision_id', 'path', 'content'], 'properties': {'path': {'type': 'string', 'minLength': 1, 'description': 'Relative path to the file inside the revision, e.g. SKILL.md.'}, 'content': {'type': 'string', 'description': 'New UTF-8 text content for the file.'}, 'skill_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Skill revision ID.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['trigger_id'], 'properties': {'enabled': {'type': 'boolean', 'description': 'Set to false to pause the trigger without deleting it, or true to resume it. Resuming requires the connection the trigger uses to still be available on the agent.'}, 'channel_id': {'type': 'string', 'minLength': 1, 'description': 'New Slack channel ID to watch. Omit to leave unchanged.'}, 'is_private': {'type': 'boolean', 'description': 'Whether the channel is private.'}, 'match_rule': {'oneOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'all'}}, 'description': 'Fire on every message posted in the channel.'}, {'type': 'object', 'required': ['kind', 'values'], 'properties': {'kind': {'type': 'string', 'const': 'contains'}, 'values': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'Case-insensitive keywords; a message fires the trigger when it contains any of them. Duplicates are deduplicated.'}}, 'description': 'Fire only on messages containing one of the keywords.'}], 'description': 'Which channel messages fire the trigger: `{"kind":"all"}` for every message, or `{"kind":"contains","values":["invoice"]}` to match keywords.'}, 'trigger_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The Slack channel trigger's unique identifier"}, 'channel_name': {'type': 'string', 'minLength': 1, 'description': 'New Slack channel name, without the leading `#`.'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'role'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'ID of the pending invitation to update.'}, 'role': {'type': 'string', 'description': 'New team role for the invitation. One of: team:owner, team:superadmin, team:admin (deprecated), team:manager, team:builder, team:member, team:clarity-member. You cannot assign a role above your own.'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['memberId', 'role'], 'properties': {'role': {'type': 'string'}, 'team_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "Duvo team UUID to operate on. API keys are pinned to a single team â\x80\x94 omit this (it falls back to the key's team) or pass that same team; a different team is rejected. OAuth callers, who can span multiple teams, should pass the target team here."}, 'memberId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': 'Member (user) ID'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sandbox_id'], 'properties': {'sandbox_id': {'type': 'string', 'minLength': 1, 'description': "The sandbox's unique identifier"}}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'integration_slug', 'trigger_type'], 'properties': {'agentId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'description': "The agent's unique identifier"}, 'enabled': {'type': 'boolean', 'default': True, 'description': 'Whether the trigger is active. Defaults to true.'}, 'trigger_type': {'type': 'string', 'description': 'Trigger type within the integration (e.g. `email_received`). Discover valid values via the trigger types endpoint. Integrations that enumerate their trigger types (Microsoft Teams, Google Drive, Google Sheets) reject anything else with 400 (`trigger_type_unsupported`), except a save that pauses a trigger already carrying that type.'}, 'filter_config': {'type': 'object', 'default': {}, 'description': "Integration-specific filter config (e.g. sender/subject filters). Shape comes from the integration's filter schema. Replaces the trigger's current config, so send the whole object â\x80\x94 except on an @mention trigger, whose config is managed from the agent's mention setting and is left as it is.", 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'integration_slug': {'type': 'string', 'description': 'Integration slug the trigger fires for (e.g. `gmail`, `outlook`, `linear-native`, `google-drive`).'}}}
Letzte Tool-Änderungen
Ähnliche MCP-Server
AdButler
Manages AdButler advertisers, campaigns, ad items, audiences, zones, creatives, catalogs, and advertising reports.
Lovie Company Formation
Supports company formation and business administration with bank accounts, cards, invoicing, bookkeeping, accounting periods, and…
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
独行录 / opcmenu
Supports founder and company discovery, collaboration goals and tasks, events and signups, networking, messaging, profiles, produ…
Meta Council
Provides governed workflows for consulting, outreach, sales deals, invoices, marketing campaigns, content approvals, accounting a…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
Stratalize Finance
Provides financial, macroeconomic, banking, credit, commodities, M&A, ESG, labor, and regulatory benchmarks for analysis and plan…