# Events_ReadActivityDetails_Workspace

`GET /v1/accounts/{account}/workspaces/{workspace}/events/{event}:activityDetails`

Reads bounded recorded targets after checking their current QDS access.

- Base URL: `https://junction-api.qualiastudios.dev`
- Authentication: an API key in the `X-API-Key` header

## Parameters

- `account` (path, string, required): The account id.
- `workspace` (path, string, required): The workspace id.
- `event` (path, string, required): The event id.
- `pageSize` (query, integer (int32)): Default 50, maximum 100 targets.
- `pageToken` (query, string): Independent target cursor, bound to the event and Activity policy version.

## Responses

- `200` OK: `application/json` `qualia.v1.ReadActivityDetailsResponse`
- `default` Default error response: `application/json` `google.rpc.Status`

## Schemas

```yaml
qualia.v1.ReadActivityDetailsResponse:
  type: object
  properties:
    targets:
      type: array
      items:
        $ref: "#/components/schemas/qualia.v1.ActivityTarget"
      description: Recorded targets in immutable order, never a search of today's selection.
    event:
      type: string
      description: Canonical action identity.
    dataset:
      type: string
      description: Scope recorded by the producer.
    currentDatasetLabel:
      type: string
      description: Current authorized dataset name; empty when unavailable.
    currentDatasetSlug:
      type: string
      description: Current authorized dataset slug; empty when unavailable.
    nextPageToken:
      type: string
      description: Empty when the recorded target list ends.
    unavailable:
      type: boolean
      description: True when dataset access could not be established. Does not imply deletion.
    originalBatchUnknown:
      type: boolean
      description: Historical action membership was not recorded for these individual events.
    changes:
      type: array
      items:
        $ref: "#/components/schemas/qualia.v1.ActivityFieldChange"
      description: |-
        Safe recorded field changes: dataset fields, or an episode task link that
        moved without a new revision. Never ingest configuration JSON.
    requestRecorded:
      type: boolean
      description: True for a durable request manifest, even when its exact count is unknown.
    checks:
      type: array
      items:
        type: string
      description: Requested checks, without child run or findings counts.
    admissionOperation:
      type: string
      description: Typed admitted re-ingest operation UUID, when recorded.
  description: Recorded evidence, with current target metadata separately identified.
qualia.v1.ActivityTarget:
  type: object
  properties:
    episode:
      type: string
      description: Immutable recorded reference.
    currentLabel:
      type: string
      description: Current readable episode number, not a historical label.
    currentUpload:
      type: string
      description: Current upload returned by QDS, not an inferred event-time source.
    unavailable:
      type: boolean
      description: Missing or inaccessible, without claiming deletion.
    reason:
      type: string
      description: Recorded ruling reason, at most 4096 characters.
    previousState:
      type: string
      description: Recorded previous review state, or empty when unknown.
    revision:
      type: integer
      description: Exact recorded edit revision. Absent when not recorded.
      format: int32
    previousRevision:
      type: integer
      description: Exact recorded previous revision. Absent is unknown, not revision zero.
      format: int32
    reviewContext:
      allOf:
        - $ref: "#/components/schemas/qualia.v1.ActivityReviewContext"
      description: |-
        What a review decided on, captured in its transaction. Absent on reviews
        recorded before it was captured: never inferred from today's episode.
  description: |-
    One recorded episode reference. Content is returned only after GetEpisode
    authorizes the exact reference as the caller. An unavailable target retains
    only its recorded identifier; no reason, state or revision content escapes.
qualia.v1.ActivityReviewContext:
  type: object
  properties:
    revision:
      type: integer
      description: |-
        The episode's edit revision at the decision; 0 is the original recording.
        Absent when it was not recorded.
      format: int32
    upload:
      type: string
      description: The upload the episode came from at the decision.
    contentReference:
      type: string
      description: |-
        The content snapshot's id at the decision (hex). An immutable reference,
        not a dataset version.
  description: The episode content a review decision applied to.
qualia.v1.ActivityFieldChange:
  type: object
  properties:
    field:
      type: string
      description: Known field path.
    previous:
      type: string
      description: Recorded previous value; absent means unknown.
    current:
      type: string
      description: Recorded resulting value; absent means unknown.
  description: |-
    An allowlisted scalar dataset field, with missing evidence kept distinct.
    An episode's `linked_task` uses task resource names, where empty means no task.
google.rpc.Status:
  oneOf:
    - $ref: "#/components/schemas/ApiError"
    - $ref: "#/components/schemas/GatewayError"
  description: "The body of a failed call: one of the two shapes below."
ApiError:
  title: API error
  type: object
  required:
    - code
    - message
    - retryable
    - details
  properties:
    code:
      type: string
      description: The gRPC code name in upper case, e.g. `NOT_FOUND`.
    message:
      type: string
    retryable:
      type: boolean
      description: Whether the same call may succeed if retried.
    details:
      type: array
      items:
        type: object
      description: "Empty, except when a dataset copy or move is refused: then one `google.rpc.ErrorInfo` with the refusal's `reason` code, its `domain` and, in `metadata`, the datasets it names."
  description: A refusal from the API itself.
GatewayError:
  title: Gateway error
  type: object
  required:
    - detail
  properties:
    detail:
      type: string
      description: What went wrong.
  description: A refusal from the gateway before the call reaches the API, for example `401` bad or missing API key, `403` key lacks the scope or environment closed, `413` body too large.
```
