# Actions

Actions in Prism / Objects — Micro Python reference.

Reference for Python SDK **0.8.0**.

[Release source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/api.md) · [Setup and client configuration](/docs/reference/python)

## create

`POST /v2/prism/{teamId}/action`

````text
client.prism.objects.actions.create(*, team_id, **params) -> ActionCreateResponse
````

Create object

## update

`PATCH /v2/prism/{teamId}/action/{actionId}`

````text
client.prism.objects.actions.update(action_id, *, team_id, **params) -> ActionUpdateResponse
````

Patch object

## list

`GET /v2/prism/{teamId}/action`

````text
client.prism.objects.actions.list(*, team_id, **params) -> ActionListResponse
````

Convenience list endpoint. Equivalent to `POST /v2/prism/{teamId}/{objectType}/query` with an empty body, plus query-string sugar for the common cases. Any unrecognized query parameter is interpreted as an equality filter on a property of that name; pass arrays for `in`. Values are received as strings, so non-string property filters via this endpoint may not work — use the `query` endpoint for typed comparisons or anything beyond simple equality.

## delete

`DELETE /v2/prism/{teamId}/action/{actionId}`

````text
client.prism.objects.actions.delete(action_id, *, team_id) -> None
````

Delete object

## bulk_create

`POST /v2/prism/{teamId}/action/import`

````text
client.prism.objects.actions.bulk_create(*, team_id, **params) -> ActionBulkCreateResponse
````

Import multiple objects in batch. Properties are keyed by slug. Automatically routes based on size: small batches complete synchronously and return 200 with the final `ImportJob`; large batches start an async job, return 202 with `status: processing` and a `Location` header, and can be polled via `GET /v2/prism/{teamId}/imports/{jobId}`.

## bulk_delete

`POST /v2/prism/{teamId}/action/batch/delete`

````text
client.prism.objects.actions.bulk_delete(*, team_id, **params) -> ActionBulkDeleteResponse
````

Soft-delete up to 100 records in a single call. Same partial-success contract as batch/update.

## bulk_update

`POST /v2/prism/{teamId}/action/batch/update`

````text
client.prism.objects.actions.bulk_update(*, team_id, **params) -> ActionBulkUpdateResponse
````

Patch up to 100 records in a single call. Each item is attempted independently — failures don't abort the batch. Inspect `results[].status` per item.

## count

`GET /v2/prism/{teamId}/action/count`

````text
client.prism.objects.actions.count(*, team_id, **params) -> ActionCountResponse
````

Returns the total number of records of this object type that the caller can see. Avoids the page-overshoot anti-pattern — clients no longer need to keep paging until `has_more` flips false to discover the total. Currently does not apply query filters; for a filtered total, pass `include_total: true` in a POST `/query` body.

## duplicate

`POST /v2/prism/{teamId}/action/{actionId}/duplicate`

````text
client.prism.objects.actions.duplicate(action_id, *, team_id) -> ActionDuplicateResponse
````

Duplicate object

## find

`GET /v2/prism/{teamId}/action/by/{slug}/{value}`

````text
client.prism.objects.actions.find(value, *, team_id, slug, **params) -> ActionFindResponse
````

Returns the single record whose property `{slug}` equals `{value}`. 404 if nothing matches; 409 if more than one record matches.

## get

`GET /v2/prism/{teamId}/action/{actionId}`

````text
client.prism.objects.actions.get(action_id, *, team_id, **params) -> ActionGetResponse
````

Get object

## query

`POST /v2/prism/{teamId}/action/query`

````text
client.prism.objects.actions.query(*, team_id, **params) -> ActionQueryResponse
````

Query

## restore

`POST /v2/prism/{teamId}/action/{actionId}/restore`

````text
client.prism.objects.actions.restore(action_id, *, team_id) -> ActionRestoreResponse
````

Restore object

## upsert

`PUT /v2/prism/{teamId}/action/by/{slug}/{value}`

````text
client.prism.objects.actions.upsert(value, *, team_id, slug, **params) -> ActionUpsertResponse
````

Idempotent create-or-update keyed on `{slug}={value}`. If exactly one record matches, it is patched and 200 is returned. If none match, a new record is created (with the lookup property set if absent) and 201 is returned. If multiple records match, 409 is returned and you should patch by id instead.

## Parameter and response types

These declarations show the request parameters and response shapes used by the methods above.

### ActionCreateParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_create_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `default` | `Dict[str, object]` | No | Properties keyed by property slug. Values can be strings, numbers, booleans, arrays, or null. For select/multiselect properties, values may be option slugs or option UUIDs on write; option slugs are returned on read. |
| `list` | `object` | No | — |
| `idempotency_key` | `str` | No | API name: `Idempotency-Key`. |

### ActionCreateResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_create_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### ActionUpdateParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_update_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `default` | `Dict[str, object]` | No | Properties keyed by property slug. Values can be strings, numbers, booleans, arrays, or null. For select/multiselect properties, values may be option slugs or option UUIDs on write; option slugs are returned on read. |
| `list` | `object` | No | — |
| `idempotency_key` | `str` | No | API name: `Idempotency-Key`. |
| `if_match` | `str` | No | API name: `If-Match`. |

### ActionUpdateResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_update_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### ActionListParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_list_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `cursor` | `str` | No | Opaque cursor from a previous response's `next_cursor`. Pass it back unchanged to fetch the next page. |
| `deleted` | `bool` | No | Include soft-deleted records. Pass the literal string `true`. |
| `include_total` | `bool` | No | When set to `true`, the response includes a `total` field with the unpaginated row count. Costs an extra pass; prefer `GET .../count` for the unfiltered total. |
| `limit` | `int` | No | Maximum number of rows to return. Capped server-side at 50. |
| `list_id` | `str` | No | Scope properties to a specific list/app. |
| `select` | `str` | No | Comma-separated property slugs to return. Use dot notation for relationships. `id` is always returned at the top level. Defaults to all properties. |
| `sort` | `str` | No | Comma-separated list of slugs. Prefix with `-` for descending. Example: `sort=-updated_at,name`. |

### Data

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_list_response.py)

Row returned by the query endpoint. `id` is always present at the top level. Selected property values are returned under `properties`, keyed by property slug. Reference-typed values are returned as nested `{ id, properties }` objects.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `is_user_object` | `Optional[bool]` | No | — |
| `properties` | `Optional[Dict[str, object]]` | No | Selected property values keyed by property slug. For select/multiselect properties, option slugs are returned. For reference properties, values are nested `{ id, properties }` objects. |
| `source` | `Optional[List[str]]` | No | — |

### ActionListResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_list_response.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `List[Data]` | Yes | — |
| `has_more` | `bool` | Yes | Accurate end-of-data signal — false on the last page, never forces clients to overshoot. |
| `next_cursor` | `Optional[str]` | No | — |
| `total` | `Optional[int]` | No | Populated only when `?include_total=true` was passed. |

### ActionBulkCreateParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_create_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `objects` | `Required[Iterable[PrismObjectPropertiesParam]]` | Yes | Array of objects to import with property values keyed by slug |
| `options` | `Options` | No | — |
| `idempotency_key` | `str` | No | API name: `Idempotency-Key`. |

### Options

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_create_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `case_insensitive` | `bool` | No | Whether deduplication should be case insensitive API name: `caseInsensitive`. |
| `dedupe_by` | `str` | No | Property slug to deduplicate on |
| `list_id` | `str` | No | App/CRM ID for context (optional) |

### Error

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_create_response.py)

Set when status=failed; describes the job-level failure (not per-row).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | `Optional[str]` | No | — |
| `message` | `Optional[str]` | No | — |

### ResultError

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_create_response.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | `Optional[str]` | No | — |
| `message` | `Optional[str]` | No | — |

### Result

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_create_response.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `Optional[str]` | No | — |
| `created` | `Optional[bool]` | No | — |
| `error` | `Optional[ResultError]` | No | — |
| `existing` | `Optional[bool]` | No | True if the row matched an existing record via the dedupe key. |

### ActionBulkCreateResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_create_response.py)

Status snapshot of an import job. Same shape used by the POST /import response and by GET /imports/&#123;jobId&#125;.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `job_id` | `Optional[str]` | No | Null for sync imports (results inlined). Set for async imports. |
| `status` | `Literal["complete", "processing", "failed"]` | Yes | — |
| `total` | `int` | Yes | Total number of rows in the import. |
| `created_at` | `Optional[datetime]` | No | — |
| `error` | `Optional[Error]` | No | Set when status=failed; describes the job-level failure (not per-row). |
| `expires_at` | `Optional[datetime]` | No | — |
| `failed` | `Optional[int]` | No | — |
| `processed` | `Optional[int]` | No | Rows that have been attempted (succeeded + failed). |
| `results` | `Optional[List[Result]]` | No | Per-row outcomes. Always present for sync imports; populated for async imports once the job reaches `complete`. |
| `succeeded` | `Optional[int]` | No | — |
| `updated_at` | `Optional[datetime]` | No | — |

### ActionBulkDeleteParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_delete_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `ids` | `Required[SequenceNotStr[str]]` | Yes | — |
| `idempotency_key` | `str` | No | API name: `Idempotency-Key`. |

### ResultRecord

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_delete_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### Summary

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_delete_response.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `failed` | `int` | Yes | — |
| `succeeded` | `int` | Yes | — |
| `total` | `int` | Yes | — |

### ActionBulkDeleteResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_delete_response.py)

Partial-success bulk operation result. Inspect `results[].status` per item; the operation as a whole returns 200 even if some items failed.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `results` | `List[Result]` | Yes | — |
| `summary` | `Summary` | Yes | — |

### ActionBulkUpdateParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_update_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `items` | `Required[Iterable[Item]]` | Yes | — |
| `idempotency_key` | `str` | No | API name: `Idempotency-Key`. |
| `id` | `Required[str]` | Yes | — |

### ActionBulkUpdateResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_bulk_update_response.py)

Partial-success bulk operation result. Inspect `results[].status` per item; the operation as a whole returns 200 even if some items failed.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `results` | `List[Result]` | Yes | — |
| `summary` | `Summary` | Yes | — |

### ActionCountParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_count_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `list_id` | `str` | No | Scope the count to a specific list/app. |

### ActionCountResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_count_response.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `total` | `int` | Yes | Number of records matching the access scope. |

### ActionDuplicateResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_duplicate_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### ActionFindParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_find_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `slug` | `Required[str]` | Yes | — |
| `list_id` | `str` | No | Scope the lookup to a specific list/app. |

### ActionFindResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_find_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### ActionGetParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_get_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `select` | `str` | No | Comma-separated property slugs to return. Use dot notation for relationships. `id` is always returned at the top level. Defaults to all properties. |

### ActionGetResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_get_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### ActionQueryParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `query` | `Required[Query]` | Yes | — |
| `id` | `Union[str, SequenceNotStr[str]]` | No | — |
| `boxes` | `SequenceNotStr[str]` | No | — |
| `cursor` | `str` | No | Alternative location for the opaque cursor (a sibling of `query`). Use whichever feels more natural; if both are present, `query.cursor` wins. |
| `deleted` | `bool` | No | — |
| `include_total` | `bool` | No | When true, the response includes a `total` field with the unpaginated row count. Costs an additional pass over the result set — for unfiltered totals prefer `GET /v2/prism/{teamId}/{objectType}/count` instead. |
| `sources` | `SequenceNotStr[str]` | No | — |

### QueryFilterQueryFilterItemPrismQueryFilterEq

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `api_empty` | `Required[Annotated[Union[str, bool], PropertyInfo(alias="=")]]` | Yes | API name: `=`. |

### QueryFilterQueryFilterItemPrismQueryFilterNe

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `api_empty` | `Required[Annotated[Union[str, bool], PropertyInfo(alias="!=")]]` | Yes | API name: `!=`. |

### QueryFilterQueryFilterItemPrismQueryFilterLt

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `api_empty` | `Required[str]` | Yes | API name: `<`. |

### QueryFilterQueryFilterItemPrismQueryFilterGt

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `api_empty` | `Required[str]` | Yes | API name: `>`. |

### QueryFilterQueryFilterItemPrismQueryFilterLte

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `api_empty` | `Required[str]` | Yes | API name: `<=`. |

### QueryFilterQueryFilterItemPrismQueryFilterGte

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `api_empty` | `Required[str]` | Yes | API name: `>=`. |

### QueryFilterQueryFilterItemContains

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `contains` | `Required[Union[str, bool, SequenceNotStr[str]]]` | Yes | — |

### QueryFilterQueryFilterItemBeginsWith

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `begins_with` | `Required[str]` | Yes | — |

### QueryFilterQueryFilterItemEndsWith

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ends_with` | `Required[str]` | Yes | — |

### QueryFilterQueryFilterItemNotContains

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `not_contains` | `Required[str]` | Yes | — |

### QueryFilterQueryFilterItemExists

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `exists` | `Required[bool]` | Yes | — |

### QueryFilterQueryFilterItemNotExists

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `not_exists` | `Required[bool]` | Yes | — |

### QueryFilterQueryFilterItemIsNull

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_null` | `Required[Union[str, bool, SequenceNotStr[str]]]` | Yes | — |

### QueryFilterQueryFilterItemIsNotNull

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `is_not_null` | `Required[Union[str, bool, SequenceNotStr[str]]]` | Yes | — |

### QueryFilterQueryFilterItemBetween

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `between` | `Required[Union[str, bool, SequenceNotStr[str]]]` | Yes | — |

### QueryFilterQueryFilterItemIn

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

````text
class QueryFilterQueryFilterItemIn(_QueryFilterQueryFilterItemInReservedKeywords, total=False):
````


### QueryFilterQueryFilterItemNotIn

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `not_in` | `Required[SequenceNotStr[str]]` | Yes | — |

<span id="action_query_paramspy"></span>

### QueryFilterQueryFilterItem

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

`QueryFilterQueryFilterItem = Union[`

### Query

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `select` | `Required[SequenceNotStr[str]]` | Yes | Property slugs to select. Use dot notation for relationships (e.g. attendee.contact.first_name). `id` is always returned at the top level of each row and does not need to be selected. |
| `combinator` | `Literal["AND", "OR"]` | No | Logical operator for combining filters |
| `cursor` | `str` | No | Opaque cursor from a previous response's `next_cursor`. Pass it back unchanged to fetch the next page. When set, `page` and `limit` are derived from the cursor and any explicit values are ignored. |
| `filter` | `Iterable[Dict[str, QueryFilterQueryFilterItem]]` | No | Filters as [&#123; slug: &#123; operator: value &#125; &#125;]. For select/multiselect properties, values may be option slugs or option UUIDs. |
| `limit` | `int` | No | Maximum number of rows to return. Capped server-side at 50; requests above the cap are rejected. |
| `list_id` | `str` | No | — |
| `page` | `int` | No | Page number (1-based). Prefer `cursor`. Page-number pagination drifts under concurrent writes; use it only for one-shot exports. |
| `sort` | `Iterable[Dict[str, Literal["asc", "desc"]]]` | No | Sort order as [&#123; slug: direction &#125;]. Array order determines sort priority |

### ActionQueryResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_query_response.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `List[Data]` | Yes | — |
| `has_more` | `bool` | Yes | Accurate end-of-data signal. False when this page contains the last record; true only when at least one more record exists. (Implementation note: the server fetches one extra row internally to determine this — clients never need to overshoot to discover the end.) |
| `next_cursor` | `Optional[str]` | No | Opaque cursor pointing at the next page. Pass it back unchanged in the request body (`cursor`) of the next call. Null when `has_more` is false. |
| `total` | `Optional[int]` | No | Only populated when the request set `include_total: true`. Total number of records matching the query, ignoring pagination. Opt-in because it costs an additional pass over the result set. |

### ActionRestoreResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_restore_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### ActionUpsertParams

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_upsert_params.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `team_id` | `str` | No | API name: `teamId`. |
| `slug` | `Required[str]` | Yes | — |
| `default` | `Dict[str, object]` | No | Properties keyed by property slug. Values can be strings, numbers, booleans, arrays, or null. For select/multiselect properties, values may be option slugs or option UUIDs on write; option slugs are returned on read. |
| `list` | `object` | No | — |
| `idempotency_key` | `str` | No | API name: `Idempotency-Key`. |

### ActionUpsertResponse

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism/objects/action_upsert_response.py)

Object returned by reads (get/create/patch/restore). id is always present.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `str` | Yes | — |
| `default` | `Optional[Dict[str, object]]` | No | Properties keyed by property slug. |
| `list` | `Optional[object]` | No | — |

### PrismObjectPropertiesParam

[Source](https://github.com/micro-so/micro-sdk-py/blob/v0.8.0/src/micro_so/types/prism_object_properties_param.py)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `default` | `Dict[str, object]` | No | Properties keyed by property slug. Values can be strings, numbers, booleans, arrays, or null. For select/multiselect properties, values may be option slugs or option UUIDs on write; option slugs are returned on read. |
| `list` | `object` | No | — |
