> For the complete documentation index, see [llms.txt](https://help.aximo.autify.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aximo.autify.com/api-reference-ja/models-1.md).

# Models

## The Error object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}
```

## The RunRequestError object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"RunRequestError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"availableModels":{"type":"array","items":{"type":"string"},"description":"Present when the request was rejected for its `model`: the models this\norganization can run, the same list `GET /api/models` returns.\n"}}}}}}
```

## The SessionStatus object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionStatus":{"type":"string","enum":["queued","created","preparing","running","succeeded","failed","terminated","error","archived"],"description":"Terminal statuses (stop polling): `succeeded`, `failed`, `terminated`, `error`, `archived`.\n"}}}}
```

## The SessionResult object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionResult":{"type":"string","nullable":true,"enum":["passed","failed","error"]}}}}
```

## The Platform object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Platform":{"type":"string","enum":["desktop","android","ios"]}}}}
```

## The MobileSession object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"MobileSession":{"type":"object","nullable":true,"properties":{"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"devicePlatform":{"type":"string"},"uploadArn":{"type":"string","nullable":true,"description":"Encrypted upload identifier token."},"uploadType":{"type":"string","nullable":true,"enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string","nullable":true}}}}}}
```

## The Session object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Session":{"type":"object","required":["id","title","prompt","platform","model","status","tags","screenshotsCount","toolCount","failedToolCount","llmCallCount","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"prompt":{"type":"string"},"platform":{"$ref":"#/components/schemas/Platform"},"model":{"type":"string","enum":["default","haiku","sonnet","opus","kimi","gpt-5.4","gpt-5.4-mini","gpt-5.5","auto"]},"status":{"$ref":"#/components/schemas/SessionStatus"},"result":{"$ref":"#/components/schemas/SessionResult"},"summary":{"type":"string","nullable":true,"description":"AI-generated summary of what happened during the session."},"observations":{"type":"array","nullable":true,"items":{"type":"object","properties":{"description":{"type":"string"},"messageId":{"type":"string"}}}},"tags":{"type":"array","items":{"type":"string"}},"screenshotsCount":{"type":"integer"},"toolCount":{"type":"integer"},"failedToolCount":{"type":"integer"},"llmCallCount":{"type":"integer"},"creditsUsed":{"type":"number","nullable":true,"description":"Credits consumed by this session."},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","nullable":true,"description":"Execution duration in milliseconds."},"createdAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Set when the session was archived (soft-deleted). Archived sessions are excluded from lists but stay readable by id."},"mobileSession":{"$ref":"#/components/schemas/MobileSession"}}},"Platform":{"type":"string","enum":["desktop","android","ios"]},"SessionStatus":{"type":"string","enum":["queued","created","preparing","running","succeeded","failed","terminated","error","archived"],"description":"Terminal statuses (stop polling): `succeeded`, `failed`, `terminated`, `error`, `archived`.\n"},"SessionResult":{"type":"string","nullable":true,"enum":["passed","failed","error"]},"MobileSession":{"type":"object","nullable":true,"properties":{"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"devicePlatform":{"type":"string"},"uploadArn":{"type":"string","nullable":true,"description":"Encrypted upload identifier token."},"uploadType":{"type":"string","nullable":true,"enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string","nullable":true}}}}}}
```

## The Model object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Model":{"type":"object","required":["id","displayName","provider"],"properties":{"id":{"type":"string","enum":["haiku","sonnet","kimi","gpt-5.4","gpt-5.4-mini","gpt-5.5","auto"],"description":"Value to pass as `model` when creating a session or triggering a run."},"displayName":{"type":"string","description":"Human-readable name, e.g. `Claude Sonnet`."},"provider":{"type":"string","enum":["anthropic","openai","moonshot","mixed"],"description":"Who serves the model. `mixed` means the model is chosen per step (`auto`)."}}}}}}
```

## The Project object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Project":{"type":"object","required":["id","name","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}
```

## The Device object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Device":{"type":"object","properties":{"arn":{"type":"string","description":"Encrypted device identifier token. Pass this value as `deviceArn` when creating sessions."},"name":{"type":"string"},"manufacturer":{"type":"string"},"model":{"type":"string"},"modelId":{"type":"string"},"platform":{"type":"string","enum":["ANDROID","IOS"]},"os":{"type":"string"},"formFactor":{"type":"string","enum":["PHONE","TABLET"]},"availability":{"type":"string"},"heapSize":{"type":"integer","nullable":true},"memory":{"type":"integer","nullable":true},"resolution":{"type":"object","nullable":true,"properties":{"width":{"type":"integer"},"height":{"type":"integer"}}}}}}}}
```

## The UserDevice object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"UserDevice":{"type":"object","required":["id","name","platform","status","createdAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Pass this value as `userDeviceId` when creating sessions or triggering runs."},"name":{"type":"string"},"platform":{"type":"string","enum":["windows","macos","linux","ios","android"]},"os":{"type":"string","nullable":true,"description":"OS version string reported at registration."},"status":{"type":"string","enum":["online","offline"],"description":"Last known connection status of the device agent."},"lastSeenAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}
```

## The UploadStatus object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"UploadStatus":{"type":"string","enum":["initialized","processing","succeeded","failed"],"description":"- `initialized` — record created, waiting for file upload and submission.\n- `processing` — worker is uploading to Device Farm.\n- `succeeded` — ready to use in sessions.\n- `failed` — processing failed (see `message` for details).\n"}}}}
```

## The Upload object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"Upload":{"type":"object","required":["id","fileName","fileType","status","uploadedAt","isExpired"],"properties":{"id":{"type":"string","format":"uuid"},"uploadArn":{"type":"string","nullable":true,"description":"Encrypted upload identifier token. Available once status is `succeeded`. Pass this value as `uploadArn` when creating sessions."},"fileName":{"type":"string"},"fileSize":{"type":"integer","nullable":true,"description":"File size in bytes."},"fileType":{"type":"string","enum":["ANDROID_APP","IOS_APP"]},"appName":{"type":"string","nullable":true,"description":"Human-readable app name (auto-extracted from APK/IPA)."},"appVersion":{"type":"string","nullable":true},"identifier":{"type":"string","nullable":true,"description":"Bundle ID (iOS) or package name (Android)."},"iconData":{"type":"string","nullable":true,"description":"Base64-encoded PNG app icon."},"status":{"$ref":"#/components/schemas/UploadStatus"},"message":{"type":"string","nullable":true,"description":"Status details (e.g. error message on failure)."},"uploadedAt":{"type":"string","format":"date-time"},"isExpired":{"type":"boolean","description":"Whether the upload has expired on Device Farm (auto-expires after 30 days)."}}},"UploadStatus":{"type":"string","enum":["initialized","processing","succeeded","failed"],"description":"- `initialized` — record created, waiting for file upload and submission.\n- `processing` — worker is uploading to Device Farm.\n- `succeeded` — ready to use in sessions.\n- `failed` — processing failed (see `message` for details).\n"}}}}
```

## The SessionListItem object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionListItem":{"type":"object","required":["id","title","prompt","platform","status","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid","nullable":true},"caseId":{"type":"string","format":"uuid","nullable":true},"title":{"type":"string"},"prompt":{"type":"string","description":"Truncated to 200 characters."},"platform":{"$ref":"#/components/schemas/Platform"},"status":{"$ref":"#/components/schemas/SessionStatus"},"result":{"$ref":"#/components/schemas/SessionResult"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"durationMs":{"type":"integer","nullable":true}}},"Platform":{"type":"string","enum":["desktop","android","ios"]},"SessionStatus":{"type":"string","enum":["queued","created","preparing","running","succeeded","failed","terminated","error","archived"],"description":"Terminal statuses (stop polling): `succeeded`, `failed`, `terminated`, `error`, `archived`.\n"},"SessionResult":{"type":"string","nullable":true,"enum":["passed","failed","error"]}}}}
```

## The SessionList object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionList":{"type":"object","required":["items","totalCount","page","pageSize","totalPages"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SessionListItem"}},"totalCount":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"},"totalPages":{"type":"integer"}}},"SessionListItem":{"type":"object","required":["id","title","prompt","platform","status","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid","nullable":true},"caseId":{"type":"string","format":"uuid","nullable":true},"title":{"type":"string"},"prompt":{"type":"string","description":"Truncated to 200 characters."},"platform":{"$ref":"#/components/schemas/Platform"},"status":{"$ref":"#/components/schemas/SessionStatus"},"result":{"$ref":"#/components/schemas/SessionResult"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"durationMs":{"type":"integer","nullable":true}}},"Platform":{"type":"string","enum":["desktop","android","ios"]},"SessionStatus":{"type":"string","enum":["queued","created","preparing","running","succeeded","failed","terminated","error","archived"],"description":"Terminal statuses (stop polling): `succeeded`, `failed`, `terminated`, `error`, `archived`.\n"},"SessionResult":{"type":"string","nullable":true,"enum":["passed","failed","error"]}}}}
```

## The SessionMessage object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionMessage":{"type":"object","required":["id","role","content","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"role":{"type":"string","description":"One of `user`, `assistant`, `system`, `tool`."},"content":{"type":"string"},"metadata":{"type":"object","nullable":true,"description":"Tool-call metadata when `role` is `tool` or `assistant`. Common keys:\n`toolName`, `toolInput`, `toolOutput`, `toolCallId`, `toolCalls`.\n\nOn the first `user` message, `rewritten: true` indicates `content` is\nthe AI-normalized form of the user's prompt (restructured into ordered\nsteps); `originalPrompt` then holds the user's exact text. User messages\nrejected by safety review carry `rejected`, `verdict`, and\n`rejectionReason`.\n","additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}}}}}}
```

## The SessionMessagesPage object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionMessagesPage":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SessionMessage"}},"nextCursor":{"type":"string","nullable":true,"description":"Pass as `cursor` on the next request. `null` when no more pages."}}},"SessionMessage":{"type":"object","required":["id","role","content","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"role":{"type":"string","description":"One of `user`, `assistant`, `system`, `tool`."},"content":{"type":"string"},"metadata":{"type":"object","nullable":true,"description":"Tool-call metadata when `role` is `tool` or `assistant`. Common keys:\n`toolName`, `toolInput`, `toolOutput`, `toolCallId`, `toolCalls`.\n\nOn the first `user` message, `rewritten: true` indicates `content` is\nthe AI-normalized form of the user's prompt (restructured into ordered\nsteps); `originalPrompt` then holds the user's exact text. User messages\nrejected by safety review carry `rejected`, `verdict`, and\n`rejectionReason`.\n","additionalProperties":true},"createdAt":{"type":"string","format":"date-time"}}}}}}
```

## The SessionScreenshot object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionScreenshot":{"type":"object","required":["id","url","capturedAt"],"properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string","description":"Resolved screenshot URL. May be a presigned S3 URL (expires in 1 hour),\na relative `/api/screenshots/...` path, or a `data:` URI.\n"},"messageId":{"type":"string","format":"uuid","nullable":true},"width":{"type":"integer","nullable":true},"height":{"type":"integer","nullable":true},"resizedWidth":{"type":"integer","nullable":true},"resizedHeight":{"type":"integer","nullable":true},"capturedAt":{"type":"string","format":"date-time"}}}}}}
```

## The SessionScreenshotsPage object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionScreenshotsPage":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SessionScreenshot"}},"nextCursor":{"type":"string","nullable":true}}},"SessionScreenshot":{"type":"object","required":["id","url","capturedAt"],"properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string","description":"Resolved screenshot URL. May be a presigned S3 URL (expires in 1 hour),\na relative `/api/screenshots/...` path, or a `data:` URI.\n"},"messageId":{"type":"string","format":"uuid","nullable":true},"width":{"type":"integer","nullable":true},"height":{"type":"integer","nullable":true},"resizedWidth":{"type":"integer","nullable":true},"resizedHeight":{"type":"integer","nullable":true},"capturedAt":{"type":"string","format":"date-time"}}}}}}
```

## The TimelineStep object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"TimelineStep":{"type":"object","required":["index","messageId","role","createdAt","screenshots"],"properties":{"index":{"type":"integer"},"messageId":{"type":"string"},"role":{"type":"string"},"toolName":{"type":"string","nullable":true},"toolInput":{"nullable":true,"description":"Tool call arguments (shape depends on tool)."},"toolOutput":{"nullable":true},"text":{"type":"string","nullable":true},"rewritten":{"type":"boolean","description":"True when `text` is the AI-normalized form of the user's prompt\n(restructured into ordered steps). Only present on the first user step.\n"},"originalPrompt":{"type":"string","description":"The user's exact prompt text. Present when `rewritten` is true."},"createdAt":{"type":"string","format":"date-time"},"screenshots":{"type":"array","items":{"$ref":"#/components/schemas/SessionScreenshot"}}}},"SessionScreenshot":{"type":"object","required":["id","url","capturedAt"],"properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string","description":"Resolved screenshot URL. May be a presigned S3 URL (expires in 1 hour),\na relative `/api/screenshots/...` path, or a `data:` URI.\n"},"messageId":{"type":"string","format":"uuid","nullable":true},"width":{"type":"integer","nullable":true},"height":{"type":"integer","nullable":true},"resizedWidth":{"type":"integer","nullable":true},"resizedHeight":{"type":"integer","nullable":true},"capturedAt":{"type":"string","format":"date-time"}}}}}}
```

## The SessionTimeline object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionTimeline":{"type":"object","required":["sessionId","stepCount","steps"],"properties":{"sessionId":{"type":"string","format":"uuid"},"stepCount":{"type":"integer"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/TimelineStep"}}}},"TimelineStep":{"type":"object","required":["index","messageId","role","createdAt","screenshots"],"properties":{"index":{"type":"integer"},"messageId":{"type":"string"},"role":{"type":"string"},"toolName":{"type":"string","nullable":true},"toolInput":{"nullable":true,"description":"Tool call arguments (shape depends on tool)."},"toolOutput":{"nullable":true},"text":{"type":"string","nullable":true},"rewritten":{"type":"boolean","description":"True when `text` is the AI-normalized form of the user's prompt\n(restructured into ordered steps). Only present on the first user step.\n"},"originalPrompt":{"type":"string","description":"The user's exact prompt text. Present when `rewritten` is true."},"createdAt":{"type":"string","format":"date-time"},"screenshots":{"type":"array","items":{"$ref":"#/components/schemas/SessionScreenshot"}}}},"SessionScreenshot":{"type":"object","required":["id","url","capturedAt"],"properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string","description":"Resolved screenshot URL. May be a presigned S3 URL (expires in 1 hour),\na relative `/api/screenshots/...` path, or a `data:` URI.\n"},"messageId":{"type":"string","format":"uuid","nullable":true},"width":{"type":"integer","nullable":true},"height":{"type":"integer","nullable":true},"resizedWidth":{"type":"integer","nullable":true},"resizedHeight":{"type":"integer","nullable":true},"capturedAt":{"type":"string","format":"date-time"}}}}}}
```

## The SessionCapture object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"SessionCapture":{"type":"object","required":["sessionId","platform","snapshotCount","truncated"],"properties":{"sessionId":{"type":"string","format":"uuid"},"platform":{"type":"string"},"startedAt":{"type":"string","format":"date-time","nullable":true},"endedAt":{"type":"string","format":"date-time","nullable":true},"browserContext":{"type":"object","nullable":true,"description":"UA, viewport, locale, timezone captured at session start.","additionalProperties":true},"events":{"type":"array","description":"Ordered, timestamped events: action_started/completed,\npage_navigated, page_lifecycle, request, response, console,\nexception, dialog_opened, snapshot_captured, target_attached,\ntarget_detached.\n","items":{"type":"object","required":["type","ts"],"properties":{"type":{"type":"string"},"ts":{"type":"integer","description":"Epoch millis (Date.now()) when the event was recorded inside the VM."}},"additionalProperties":true}},"storageState":{"type":"object","nullable":true,"description":"Cookies and localStorage captured at session end.","additionalProperties":true},"snapshotCount":{"type":"integer","description":"Number of DOM+AX snapshots captured (one per `screenshot` tool call and per page-load)."},"snapshotsPrefix":{"type":"string","nullable":true,"description":"S3 prefix for snapshot blobs. Null while snapshots are persisted inline."},"snapshots":{"type":"array","description":"Inline DOM + accessibility-tree snapshots, in capture order. Each\nentry pairs a pixel-level event (a `screenshot` tool call or a\n`Page.lifecycleEvent: load`) with the structural state of the page\nat that moment. Large — expect single-MB responses on long\nsessions.\n","items":{"type":"object","required":["id","ts","trigger","targetId","url"],"properties":{"id":{"type":"string","format":"uuid"},"ts":{"type":"integer","description":"Epoch ms when the snapshot was taken"},"messageId":{"type":"string","format":"uuid","nullable":true,"description":"AgentMessage that triggered the snapshot, when trigger was `screenshot`."},"trigger":{"type":"string","enum":["screenshot","page_load"]},"targetId":{"type":"string","description":"CDP target (tab/iframe) id"},"url":{"type":"string"},"title":{"type":"string"},"dom":{"description":"DOMSnapshot.captureSnapshot payload (computed styles excluded for size)."},"axTree":{"description":"Accessibility.getFullAXTree payload — what `getByRole`/`getByLabel` index into."}}}},"truncated":{"type":"boolean","description":"True if the event buffer reached its cap and dropped tail events."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The CaseAppInfo object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseAppInfo":{"type":"object","required":["uploadArn","uploadType","appName"],"properties":{"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string"}}}}}}
```

## The CaseMobileConfig object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseMobileConfig":{"type":"object","required":["deviceArn","deviceName"],"properties":{"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"platform":{"type":"string","enum":["ANDROID","IOS"]},"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string"},"bundleId":{"type":"string"},"apps":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CaseAppInfo"}}}},"CaseAppInfo":{"type":"object","required":["uploadArn","uploadType","appName"],"properties":{"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string"}}}}}}
```

## The CaseWebConfig object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseWebConfig":{"type":"object","properties":{"hostnameOverrideIds":{"type":"array","items":{"type":"string","format":"uuid"}}}}}}}
```

## The CaseDesktopConfig object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseDesktopConfig":{"type":"object","required":["userDeviceId","name","platform","os"],"properties":{"userDeviceId":{"type":"string","format":"uuid","description":"The registered BYOD desktop device this case runs on."},"name":{"type":"string"},"platform":{"type":"string","enum":["windows","macos","linux"]},"os":{"type":"string","nullable":true}}}}}}
```

## The CaseMultiDeviceWebDevice object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseMultiDeviceWebDevice":{"type":"object","required":["kind","name"],"properties":{"kind":{"type":"string","enum":["web"]},"name":{"type":"string"},"startUrl":{"type":"string","nullable":true},"userDeviceId":{"type":"string","format":"uuid","description":"When set, this entry runs on the user's registered desktop device."},"localDeviceName":{"type":"string","description":"Display-name snapshot of the registered device, resolved when the config was saved."}}}}}}
```

## The CaseMultiDeviceMobileDevice object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseMultiDeviceMobileDevice":{"type":"object","required":["kind","name","mobilePlatform"],"properties":{"kind":{"type":"string","enum":["mobile"]},"name":{"type":"string"},"mobilePlatform":{"type":"string","enum":["android","ios"]},"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"userDeviceId":{"type":"string","format":"uuid","description":"When set, this entry runs on the user's registered phone."},"localDeviceName":{"type":"string","description":"Display-name snapshot of the registered device, resolved when the config was saved."},"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string"},"bundleId":{"type":"string"},"apps":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CaseAppInfo"}}}},"CaseAppInfo":{"type":"object","required":["uploadArn","uploadType","appName"],"properties":{"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string"}}}}}}
```

## The CaseMultiDeviceDevice object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseMultiDeviceDevice":{"oneOf":[{"$ref":"#/components/schemas/CaseMultiDeviceWebDevice"},{"$ref":"#/components/schemas/CaseMultiDeviceMobileDevice"}],"discriminator":{"propertyName":"kind","mapping":{"web":"#/components/schemas/CaseMultiDeviceWebDevice","mobile":"#/components/schemas/CaseMultiDeviceMobileDevice"}}},"CaseMultiDeviceWebDevice":{"type":"object","required":["kind","name"],"properties":{"kind":{"type":"string","enum":["web"]},"name":{"type":"string"},"startUrl":{"type":"string","nullable":true},"userDeviceId":{"type":"string","format":"uuid","description":"When set, this entry runs on the user's registered desktop device."},"localDeviceName":{"type":"string","description":"Display-name snapshot of the registered device, resolved when the config was saved."}}},"CaseMultiDeviceMobileDevice":{"type":"object","required":["kind","name","mobilePlatform"],"properties":{"kind":{"type":"string","enum":["mobile"]},"name":{"type":"string"},"mobilePlatform":{"type":"string","enum":["android","ios"]},"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"userDeviceId":{"type":"string","format":"uuid","description":"When set, this entry runs on the user's registered phone."},"localDeviceName":{"type":"string","description":"Display-name snapshot of the registered device, resolved when the config was saved."},"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string"},"bundleId":{"type":"string"},"apps":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CaseAppInfo"}}}},"CaseAppInfo":{"type":"object","required":["uploadArn","uploadType","appName"],"properties":{"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string"}}}}}}
```

## The CaseListItem object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseListItem":{"type":"object","required":["id","projectId","type","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["web","mobile","desktop","multi_device"]},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true,"description":"Truncated to 200 characters."},"startUrl":{"type":"string","nullable":true},"lastRunAt":{"type":"string","format":"date-time","nullable":true},"lastStatus":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The CaseList object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseList":{"type":"object","required":["items","totalCount","page","pageSize","totalPages"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CaseListItem"}},"totalCount":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"},"totalPages":{"type":"integer"}}},"CaseListItem":{"type":"object","required":["id","projectId","type","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["web","mobile","desktop","multi_device"]},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true,"description":"Truncated to 200 characters."},"startUrl":{"type":"string","nullable":true},"lastRunAt":{"type":"string","format":"date-time","nullable":true},"lastStatus":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The CaseDetail object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"CaseDetail":{"type":"object","required":["id","projectId","type","scenario","format","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["web","mobile","desktop","multi_device"]},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"scenario":{"type":"string","description":"Test case content (interpretation depends on `format`)."},"format":{"type":"string","enum":["gherkin","markdown","plain_text"]},"startUrl":{"type":"string","nullable":true},"apiEnabled":{"type":"boolean"},"lastRunAt":{"type":"string","format":"date-time","nullable":true},"lastStatus":{"type":"string","nullable":true},"archivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Set when the case was archived (soft-deleted). Archived cases are excluded from lists but stay readable by id."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"apiMobileConfig":{"allOf":[{"$ref":"#/components/schemas/CaseMobileConfig"}],"nullable":true,"description":"Default mobile targeting; per-run trigger overrides supersede it."},"apiWebConfig":{"allOf":[{"$ref":"#/components/schemas/CaseWebConfig"}],"nullable":true,"description":"Default web hostname overrides; per-run trigger overrides supersede them."},"apiDesktopConfig":{"allOf":[{"$ref":"#/components/schemas/CaseDesktopConfig"}],"nullable":true,"description":"Default BYOD desktop targeting; per-run trigger overrides supersede it."},"apiMultiDeviceConfig":{"type":"array","nullable":true,"minItems":2,"maxItems":3,"items":{"$ref":"#/components/schemas/CaseMultiDeviceDevice"},"description":"Multi-device targeting (2-3 devices). Read-only default: the\ntrigger endpoint has no multi-device override fields, so runs\nalways use this stored configuration.\n"}}},"CaseMobileConfig":{"type":"object","required":["deviceArn","deviceName"],"properties":{"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"platform":{"type":"string","enum":["ANDROID","IOS"]},"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string"},"bundleId":{"type":"string"},"apps":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CaseAppInfo"}}}},"CaseAppInfo":{"type":"object","required":["uploadArn","uploadType","appName"],"properties":{"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string","nullable":true},"bundleId":{"type":"string"}}},"CaseWebConfig":{"type":"object","properties":{"hostnameOverrideIds":{"type":"array","items":{"type":"string","format":"uuid"}}}},"CaseDesktopConfig":{"type":"object","required":["userDeviceId","name","platform","os"],"properties":{"userDeviceId":{"type":"string","format":"uuid","description":"The registered BYOD desktop device this case runs on."},"name":{"type":"string"},"platform":{"type":"string","enum":["windows","macos","linux"]},"os":{"type":"string","nullable":true}}},"CaseMultiDeviceDevice":{"oneOf":[{"$ref":"#/components/schemas/CaseMultiDeviceWebDevice"},{"$ref":"#/components/schemas/CaseMultiDeviceMobileDevice"}],"discriminator":{"propertyName":"kind","mapping":{"web":"#/components/schemas/CaseMultiDeviceWebDevice","mobile":"#/components/schemas/CaseMultiDeviceMobileDevice"}}},"CaseMultiDeviceWebDevice":{"type":"object","required":["kind","name"],"properties":{"kind":{"type":"string","enum":["web"]},"name":{"type":"string"},"startUrl":{"type":"string","nullable":true},"userDeviceId":{"type":"string","format":"uuid","description":"When set, this entry runs on the user's registered desktop device."},"localDeviceName":{"type":"string","description":"Display-name snapshot of the registered device, resolved when the config was saved."}}},"CaseMultiDeviceMobileDevice":{"type":"object","required":["kind","name","mobilePlatform"],"properties":{"kind":{"type":"string","enum":["mobile"]},"name":{"type":"string"},"mobilePlatform":{"type":"string","enum":["android","ios"]},"deviceArn":{"type":"string","description":"Encrypted device identifier token."},"deviceName":{"type":"string"},"userDeviceId":{"type":"string","format":"uuid","description":"When set, this entry runs on the user's registered phone."},"localDeviceName":{"type":"string","description":"Display-name snapshot of the registered device, resolved when the config was saved."},"uploadArn":{"type":"string","description":"Encrypted upload identifier token."},"uploadType":{"type":"string","enum":["own_app","existing","sample"]},"appName":{"type":"string"},"bundleId":{"type":"string"},"apps":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CaseAppInfo"}}}}}}}
```

## The PlanListItem object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"PlanListItem":{"type":"object","required":["id","projectId","title","apiEnabled","caseCount","hasMobileCases","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"apiEnabled":{"type":"boolean","description":"Whether the plan can be triggered through the API."},"caseCount":{"type":"integer"},"hasMobileCases":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string"}}}}}}}}
```

## The PlanDetail object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"PlanDetail":{"type":"object","required":["id","projectId","title","apiEnabled","executionMode","stopOnFailure","variables","caseCount","createdAt","updatedAt","cases"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"apiEnabled":{"type":"boolean","description":"Whether the plan can be triggered through the API."},"executionMode":{"type":"string","enum":["parallel","sequential"]},"stopOnFailure":{"type":"boolean"},"variables":{"type":"array","description":"Plan variables. Secret values are always masked as `***`.","items":{"type":"object","required":["name","value","isSecret"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"isSecret":{"type":"boolean"}}}},"caseCount":{"type":"integer"},"archivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Set when the plan was archived (soft-deleted). Archived plans are excluded from lists but stay readable by id."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdBy":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string"}}},"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"cases":{"type":"array","description":"The plan's cases in execution order.","items":{"type":"object","required":["id","order","type","title"],"properties":{"id":{"type":"string","format":"uuid"},"order":{"type":"integer"},"type":{"type":"string","enum":["web","mobile","desktop","multi_device"]},"title":{"type":"string","nullable":true},"lastStatus":{"type":"string","nullable":true}}}}}}}}}
```

## The PlanRunCase object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"PlanRunCase":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"caseId":{"type":"string","format":"uuid"},"title":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"status":{"type":"string","enum":["pending","running","passed","failed","skipped","cancelled"]},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The PlanRun object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"PlanRun":{"type":"object","required":["id","status","triggerSource","executionMode","totalCases","completedCases","passedCases","failedCases","createdAt","cases"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","running","completed","failed","cancelled"]},"triggerSource":{"type":"string","enum":["manual","scheduled","api"]},"executionMode":{"type":"string","enum":["parallel","sequential"],"description":"The effective mode this run executed with."},"totalCases":{"type":"integer"},"completedCases":{"type":"integer"},"passedCases":{"type":"integer"},"failedCases":{"type":"integer"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time","nullable":true,"description":"Set when the run was archived (soft-deleted). Archived runs are excluded from the runs list but stay readable by id."},"cases":{"type":"array","items":{"$ref":"#/components/schemas/PlanRunCase"}}}},"PlanRunCase":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"caseId":{"type":"string","format":"uuid"},"title":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"status":{"type":"string","enum":["pending","running","passed","failed","skipped","cancelled"]},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The ProjectPlanRunItem object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"ProjectPlanRunItem":{"allOf":[{"$ref":"#/components/schemas/PlanRunSummary"},{"type":"object","required":["planId","plan"],"properties":{"planId":{"type":"string","format":"uuid"},"plan":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"}}}}}]},"PlanRunSummary":{"type":"object","required":["id","status","triggerSource","executionMode","totalCases","completedCases","passedCases","failedCases","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","running","completed","failed","cancelled"]},"triggerSource":{"type":"string","enum":["manual","scheduled","api"]},"executionMode":{"type":"string","enum":["parallel","sequential"],"description":"The effective mode this run executed with."},"totalCases":{"type":"integer"},"completedCases":{"type":"integer"},"passedCases":{"type":"integer"},"failedCases":{"type":"integer"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}
```

## The PlanRunSummary object

```json
{"openapi":"3.0.3","info":{"title":"Aximo API","version":"1.0.0"},"components":{"schemas":{"PlanRunSummary":{"type":"object","required":["id","status","triggerSource","executionMode","totalCases","completedCases","passedCases","failedCases","createdAt"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","running","completed","failed","cancelled"]},"triggerSource":{"type":"string","enum":["manual","scheduled","api"]},"executionMode":{"type":"string","enum":["parallel","sequential"],"description":"The effective mode this run executed with."},"totalCases":{"type":"integer"},"completedCases":{"type":"integer"},"passedCases":{"type":"integer"},"failedCases":{"type":"integer"},"startedAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}
```
