Skip to content

Events_GetEvent_Workspace

GET
/v1/accounts/{account}/workspaces/{workspace}/events/{event}
curl --request GET \
--url https://dev-api.qualiastudios.dev/v1/accounts/example/workspaces/example/events/example \
--header 'X-API-Key: <X-API-Key>'

Gets one event.

account
required
string

The account id.

workspace
required
string

The workspace id.

event
required
string

The event id.

OK

Media type application/json

One thing that happened: a row of the audit trail.

Every service writes its own events table (qds.events, platform.events, fleet.events, training.events, pipeline.events, tasks.events) in the transaction that makes the change, with these fields as columns. events-api copies the rows into one record and serves them; status (see Status) is read from the same rows. events-api writes events.events for what its retention job did (events.v1.Event).

Each service types its actions in its own proto (qds.workflow.v1.Event, platform.v1.Event, fleet.v1.Event, training.v1.Event, pipeline.v1.Event, tasks.v1.Event, events.v1.Event): action is the service name and the type’s value name, and payload is the matching payload message as protojson, rendered by the writer. Nothing downstream decodes a service proto.

Served by events-api (Events), read from the record.

object
id

The event’s id (a UUID). The relay copies a row under this id, so a replayed copy is a no-op. (— api-linter: core::0148::use-uid=disabled aip.dev/not-precedent: the envelope predates the resource; id is a stored column and the stream’s field. —)

string
sequence

Its place in the record: one global sequence, strictly increasing, in the order rows were copied. A service’s own table numbers its rows separately (source_sequence).

string
createTime

When the change was committed.

string format: date-time
organization

The organization (account) id it happened in.

string
workspace

The workspace id it happened in; empty when origin is ORGANIZATION.

string
service

The service that committed it: “qds”, “platform”, “fleet”, “training”, “pipeline”, “tasks” or “events”. The prefix of action.

string
actor

Who did it. api_key is set when a person acted through a key; actor kind SYSTEM, RULE or MODEL for changes nobody made by hand.

object
kind

What kind of actor it is.

string format: enum
Allowed values: KIND_UNSPECIFIED PERSON VALIDATION RULE MODEL OPERATOR SYSTEM
user

The person’s user id when kind is PERSON; empty otherwise.

string
displayName

The person’s display name at the time, for rendering without a lookup.

string
agent

The rule code, or the model id (e.g. “gemini-robotics-er”), when not a person.

string
run

The run a model or rule finding came from, when it has one.

string
apiKey

The API key’s id when a person acted through one; empty for a session. Never the key itself.

string
attribution

Signed identity evidence recorded with the change, kept apart from the principal above. Unset on older records and wherever none was signed.

object
authentication

How the principal authenticated.

string format: enum
Allowed values: AUTHENTICATION_UNSPECIFIED SESSION API_KEY SERVICE
initiator

The user id of a person verified as starting the work: the person of a session, or the person a trusted service’s signed job record names. Empty when nobody was verified.

string
initiatorDisplayName

The initiator’s display name at the time, never their email.

string
credentialCreator

The user id of the key’s creator at the time. Not who used the key.

string
credentialOwner

Who owned the key at the time.

string format: enum
Allowed values: CREDENTIAL_OWNER_UNSPECIFIED PERSON SPACE
credentialOwnerSpace

The owning space’s id (a workspace or the organization) when credential_owner is SPACE.

string
action

What happened: <service>.<TYPE>, e.g. “qds.EPISODES_RULED”. TYPE is a value name of the service’s Event.Type.

string
subject

What it happened to, e.g. a dataset.

object
type

What kind of thing, e.g. “dataset”, “episode”, “robot”, “workspace”.

string
name

Its resource name or id, e.g. “accounts/a/datasets/d”.

string
label

What a person called it at the time, e.g. “Pick and place, v2”.

string
parent

What the subject lives in, when that matters for filtering (a dataset’s episode, a run’s op); unset otherwise.

object
type

What kind of thing, e.g. “dataset”, “episode”, “robot”, “workspace”.

string
name

Its resource name or id, e.g. “accounts/a/datasets/d”.

string
label

What a person called it at the time, e.g. “Pick and place, v2”.

string
related

Other things the one change touched, e.g. the episodes a ruling covered, or the second entity of a two-entity action.

Array<object>

A thing an event or a status points at. Labels are captured when the event is written, so a renamed or deleted thing still reads as it was. (— api-linter: core::0123::resource-annotation=disabled aip.dev/not-precedent: a pointer at a resource, not one itself. —)

object
type

What kind of thing, e.g. “dataset”, “episode”, “robot”, “workspace”.

string
name

Its resource name or id, e.g. “accounts/a/datasets/d”.

string
label

What a person called it at the time, e.g. “Pick and place, v2”.

string
summary

One plain line, e.g. “rejected 12 episodes”.

string
payload

The service’s payload message for action, as protojson. Never holds a secret value.

A Struct, not a Value: protojson renders a message as a JSON object, so a scalar or list here would be a writer bug the type now refuses. Not an Any: an Any needs the service’s descriptors to read, and readers here never have them.

object
payloadType

The payload’s full message name, e.g. “qds.workflow.v1.Event.EpisodesRuled”; empty when there is no payload.

string
requestId

The request that made the change, for joining with its logs and trace. (— api-linter: core::0155::request-id-format=disabled aip.dev/not-precedent: a recorded value, not an idempotency key. —)

string
undoable

Whether the owning service can undo it.

boolean
undoes

The id of the event this one undid; empty unless it is an undo.

string
operation

The running work it belongs to, when it does (Status.operation). Every OPERATION_* event sets it.

string
sourceSequence

The source row’s sequence in its service’s events table (service names the table). Status orders an operation’s transitions by it, never by sequence, which is only the order rows reached the record (ADR 0025, “Order: two sequences”).

string
name

Accounts/{account}/workspaces/{workspace}/events/{event} for an event of a workspace; accounts/{account}/events/{event} for one of the organization itself. {event} is id. Every event of an organization can also be read by its organization path.

string
origin

Whether a workspace or the organization itself made the change.

string format: enum
Allowed values: ORIGIN_UNSPECIFIED WORKSPACE ORGANIZATION
activityLink

Explicit request correlation. Absent on historical uncorrelated records.

object
root

Canonical root event UUID, scoped to the event’s account.

string
role

Whether this event is the root or a derived effect.

string format: enum
Allowed values: ROLE_UNSPECIFIED ROOT EFFECT
Example
{
"actor": {
"kind": "KIND_UNSPECIFIED",
"attribution": {
"authentication": "AUTHENTICATION_UNSPECIFIED",
"credentialOwner": "CREDENTIAL_OWNER_UNSPECIFIED"
}
},
"origin": "ORIGIN_UNSPECIFIED",
"activityLink": {
"role": "ROLE_UNSPECIFIED"
}
}

Default error response

Media type application/json

The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.

object
code

The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].

integer format: int32
message

A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.

string
details

A list of messages that carry the error details. There is a common set of message types for APIs to use.

Array<object>

Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.

object
@type

The type of the serialized message.

string
key
additional properties
any
Example generated
{
"code": 1,
"message": "example",
"details": [
{
"@type": "example"
}
]
}