# generated from a2a v1
# model digest 911794dff39b27311ddc6db22aa294d7c70c823fd2310684ad996b6eab4c5cdf
# contract digest slice-sha256/2:db1692fa8ffc8d64da82c331373706560cd08be45c023138229262246325a277
# do not edit: regenerate with `ess generate`
openapi: 3.1.0
info:
  title: a2a-agent
  summary: An A2A server agent, reached over JSON-RPC, gRPC or HTTP+JSON (A2A v1.0.1 section 5).
  description: |-
    The HTTP surface of `a2a-agent`, one of the components of `a2a` v1.

    Every path here is one semantic command, so the method is always POST and the path is the command's wire name under its domain's: a command is not a resource, and this document does not invent one. A status code is the outcome the specification declares — 202 for a branch that was taken, 422 for a refusal the input decides, 502 for a refusal decided outside the request — and the `outcome` property of every response body names the branch. Events emitted by a branch are published to consumers through the event transport, and the `published` property of every response body lists them too, in publication order. A branch that returns the command's response is carried out in the request that took it, so it is answered 200, and its body carries that response under `response`.

    The specification declares who may invoke what (`x-ess-may-invoke` on each operation), so every command is sent as a declared actor. How a request proves which actor it is belongs to the realization, which authenticates it and hands the surface the caller; nothing in the request itself names one. The grant is checked before the command runs, and a request authenticated as no actor, or as one without the grant, is answered 403 with one standard refusal, the same for every command: `{"refused": "not granted", "actor": <name or null>}`. A 403 a declared branch answers carries `outcome` and the declared `error` instead, so a client tells the two apart by the members present. A command no declared actor may invoke is refused to every caller. A view an actor's grant names is read-checked the same way (`x-ess-may-read` on its operation): a request authenticated as no actor, or as one the grant does not name, is answered 403 with the same standard refusal before the view is read. A view no grant names is open, and any caller may read what it publishes.

    This component declares `reached_by: network`, so its callers are not deployed with it and this contract is the surface they reach it through. That declaration is also why the views its domains declare have paths here: a GET under `views` per projection, answering every row it holds. There is no page size, no cursor, no ordering and no filter parameter, because the specification states none — a view's filter is part of the projection, not of the request. A view that declares `params:` is the exception: each is a query parameter, described on its operation, and a view that declares `paging:` takes its page and size there.
  version: v1
  x-ess-provenance:
    system: a2a
    specification_version: v1
    source_digest: 911794dff39b27311ddc6db22aa294d7c70c823fd2310684ad996b6eab4c5cdf
    contract_digest: slice-sha256/2:db1692fa8ffc8d64da82c331373706560cd08be45c023138229262246325a277
  x-ess-reached-by: network
tags:
- name: discovery
  description: 'The Agent Card an A2A agent publishes about itself: identity, interfaces, capabilities, skills and security schemes (A2A v1.0.1 section 4.4, proto messages AgentCard and below).'
- name: tasks
  description: Tasks an A2A agent runs for its clients, the messages and artifacts they carry, and the push-notification configurations that follow them (A2A v1.0.1 sections 3 and 4.1-4.3, proto service A2AService).
paths:
  /discovery/commands/extendedAgentCard:
    post:
      operationId: a2a.discovery.GetExtendedAgentCard
      summary: Get extended agent card
      description: Return the Agent Card an authenticated client may see, possibly with more skills than the public card (A2A v1.0.1 section 3.1.11; JSON-RPC GetExtendedAgentCard; GET /extendedAgentCard).
      tags:
      - discovery
      x-ess-may-invoke:
      - a2a.discovery.Client
      requestBody:
        description: The input `a2a.discovery.GetExtendedAgentCard` declares.
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.Input'
      responses:
        '200':
          description: 'Outcome `returned`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.returned.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `not-supported`, `not-configured`, `version-not-supported` and `extension-required`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.extension-required.Response'
                    not-configured: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.not-configured.Response'
                    not-supported: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.not-supported.Response'
                    version-not-supported: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.not-supported.Response'
                - $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.not-configured.Response'
                - $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.extension-required.Response'
  /tasks/commands/message:send:
    post:
      operationId: a2a.tasks.SendMessage
      summary: Send message
      description: Send a message to the agent, which answers with a task tracking its work or with a direct message (A2A v1.0.1 section 3.1.1; JSON-RPC SendMessage; POST /message:send).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.SendMessage` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.SendMessage.Input'
      responses:
        '200':
          description: 'Outcomes `continued`, `direct-message` and `task-created`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    continued: '#/components/schemas/a2a.tasks.SendMessage.continued.Response'
                    direct-message: '#/components/schemas/a2a.tasks.SendMessage.direct-message.Response'
                    task-created: '#/components/schemas/a2a.tasks.SendMessage.task-created.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.continued.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.direct-message.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.task-created.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `task-not-found`, `task-terminal`, `context-mismatch`, `context-not-accepted`, `content-type-not-supported`, `task-limit`, `history-limit`, `version-not-supported` and `extension-required`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    content-type-not-supported: '#/components/schemas/a2a.tasks.SendMessage.content-type-not-supported.Response'
                    context-mismatch: '#/components/schemas/a2a.tasks.SendMessage.context-mismatch.Response'
                    context-not-accepted: '#/components/schemas/a2a.tasks.SendMessage.context-not-accepted.Response'
                    extension-required: '#/components/schemas/a2a.tasks.SendMessage.extension-required.Response'
                    history-limit: '#/components/schemas/a2a.tasks.SendMessage.history-limit.Response'
                    task-limit: '#/components/schemas/a2a.tasks.SendMessage.task-limit.Response'
                    task-not-found: '#/components/schemas/a2a.tasks.SendMessage.task-not-found.Response'
                    task-terminal: '#/components/schemas/a2a.tasks.SendMessage.task-terminal.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.SendMessage.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.task-not-found.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.task-terminal.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.context-mismatch.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.context-not-accepted.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.content-type-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.task-limit.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.history-limit.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendMessage.extension-required.Response'
  /tasks/commands/message:stream:
    post:
      operationId: a2a.tasks.SendStreamingMessage
      summary: Send streaming message
      description: 'Send a message and stream the answer: one message, or the task followed by its status and artifact updates until it is terminal (A2A v1.0.1 section 3.1.2; JSON-RPC SendStreamingMessage; POST /message:stream).'
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.SendStreamingMessage` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.Input'
      responses:
        '200':
          description: 'Outcomes `continued`, `direct-message` and `task-created`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    continued: '#/components/schemas/a2a.tasks.SendStreamingMessage.continued.Response'
                    direct-message: '#/components/schemas/a2a.tasks.SendStreamingMessage.direct-message.Response'
                    task-created: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-created.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.continued.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.direct-message.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-created.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `task-not-found`, `task-terminal`, `context-mismatch`, `context-not-accepted`, `content-type-not-supported`, `task-limit`, `history-limit`, `version-not-supported`, `extension-required` and `streaming-not-supported`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    content-type-not-supported: '#/components/schemas/a2a.tasks.SendStreamingMessage.content-type-not-supported.Response'
                    context-mismatch: '#/components/schemas/a2a.tasks.SendStreamingMessage.context-mismatch.Response'
                    context-not-accepted: '#/components/schemas/a2a.tasks.SendStreamingMessage.context-not-accepted.Response'
                    extension-required: '#/components/schemas/a2a.tasks.SendStreamingMessage.extension-required.Response'
                    history-limit: '#/components/schemas/a2a.tasks.SendStreamingMessage.history-limit.Response'
                    streaming-not-supported: '#/components/schemas/a2a.tasks.SendStreamingMessage.streaming-not-supported.Response'
                    task-limit: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-limit.Response'
                    task-not-found: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-not-found.Response'
                    task-terminal: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-terminal.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.SendStreamingMessage.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-not-found.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-terminal.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.context-mismatch.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.context-not-accepted.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.content-type-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.task-limit.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.history-limit.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.streaming-not-supported.Response'
  /tasks/commands/pushNotificationConfigs:create:
    post:
      operationId: a2a.tasks.CreateTaskPushNotificationConfig
      summary: Create push notification config
      description: Register a webhook for a task's updates (A2A v1.0.1 section 3.1.7; JSON-RPC CreateTaskPushNotificationConfig; POST /tasks/{task_id}/pushNotificationConfigs).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.CreateTaskPushNotificationConfig` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.Input'
      responses:
        '200':
          description: 'Outcomes `created` and `assigned`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    assigned: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.assigned.Response'
                    created: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.created.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.created.Response'
                - $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.assigned.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '409':
          description: 'Outcome `task-not-found`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.task-not-found.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported`, `extension-required`, `push-not-supported` and `config-limit`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    config-limit: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.config-limit.Response'
                    extension-required: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.extension-required.Response'
                    push-not-supported: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.push-not-supported.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.push-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.config-limit.Response'
  /tasks/commands/pushNotificationConfigs:delete:
    post:
      operationId: a2a.tasks.DeleteTaskPushNotificationConfig
      summary: Delete push notification config
      description: Remove a push-notification configuration; deleting it again has the same effect (A2A v1.0.1 section 3.1.10; JSON-RPC DeleteTaskPushNotificationConfig; DELETE /tasks/{task_id}/pushNotificationConfigs/{id}).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.DeleteTaskPushNotificationConfig` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.Input'
      responses:
        '202':
          description: 'Outcome `deleted`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.deleted.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `task-not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.task-not-found.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported`, `extension-required` and `push-not-supported`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.extension-required.Response'
                    push-not-supported: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.push-not-supported.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.DeleteTaskPushNotificationConfig.push-not-supported.Response'
  /tasks/commands/pushNotificationConfigs:get:
    post:
      operationId: a2a.tasks.GetTaskPushNotificationConfig
      summary: Get push notification config
      description: Read one push-notification configuration (A2A v1.0.1 section 3.1.8; JSON-RPC GetTaskPushNotificationConfig; GET /tasks/{task_id}/pushNotificationConfigs/{id}).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.GetTaskPushNotificationConfig` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.Input'
      responses:
        '200':
          description: 'Outcome `found`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.found.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.not-found.Response'
        '409':
          description: 'Outcome `config-not-found`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.config-not-found.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported`, `extension-required` and `push-not-supported`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.extension-required.Response'
                    push-not-supported: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.push-not-supported.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.push-not-supported.Response'
  /tasks/commands/pushNotificationConfigs:list:
    post:
      operationId: a2a.tasks.ListTaskPushNotificationConfigs
      summary: List push notification configs
      description: Read every active push-notification configuration of a task (A2A v1.0.1 section 3.1.9; JSON-RPC ListTaskPushNotificationConfigs; GET /tasks/{task_id}/pushNotificationConfigs).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.ListTaskPushNotificationConfigs` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.Input'
      responses:
        '200':
          description: 'Outcome `listed`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.listed.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `task-not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.task-not-found.Response'
        '409':
          description: 'Outcome `other-tenant`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.other-tenant.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported`, `extension-required` and `push-not-supported`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.extension-required.Response'
                    push-not-supported: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.push-not-supported.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.push-not-supported.Response'
  /tasks/commands/tasks:cancel:
    post:
      operationId: a2a.tasks.CancelTask
      summary: Cancel task
      description: Ask the agent to cancel a task (A2A v1.0.1 section 3.1.5; JSON-RPC CancelTask; POST /tasks/{id}:cancel).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.CancelTask` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.CancelTask.Input'
      responses:
        '200':
          description: 'Outcome `canceled`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.CancelTask.canceled.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.CancelTask.not-found.Response'
        '409':
          description: 'Outcomes `other-tenant` and `not-cancelable`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    not-cancelable: '#/components/schemas/a2a.tasks.CancelTask.not-cancelable.Response'
                    other-tenant: '#/components/schemas/a2a.tasks.CancelTask.other-tenant.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.CancelTask.other-tenant.Response'
                - $ref: '#/components/schemas/a2a.tasks.CancelTask.not-cancelable.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported`, `extension-required` and `not-cancelable-now`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.tasks.CancelTask.extension-required.Response'
                    not-cancelable-now: '#/components/schemas/a2a.tasks.CancelTask.not-cancelable-now.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.CancelTask.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.CancelTask.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.CancelTask.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.CancelTask.not-cancelable-now.Response'
  /tasks/commands/tasks:complete:
    post:
      operationId: a2a.tasks.CompleteTask
      summary: Complete task
      description: The task finished successfully (TASK_STATE_COMPLETED).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.CompleteTask` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.CompleteTask.Input'
      responses:
        '202':
          description: 'Outcome `moved`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.CompleteTask.moved.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.CompleteTask.not-found.Response'
        '409':
          description: 'Outcome `wrong-state`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.CompleteTask.wrong-state.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/commands/tasks:fail:
    post:
      operationId: a2a.tasks.FailTask
      summary: Fail task
      description: The task finished with an error (TASK_STATE_FAILED).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.FailTask` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.FailTask.Input'
      responses:
        '202':
          description: 'Outcome `moved`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.FailTask.moved.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.FailTask.not-found.Response'
        '409':
          description: 'Outcome `wrong-state`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.FailTask.wrong-state.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/commands/tasks:get:
    post:
      operationId: a2a.tasks.GetTask
      summary: Get task
      description: Read a task's current state (A2A v1.0.1 section 3.1.3; JSON-RPC GetTask; GET /tasks/{id}).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.GetTask` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.GetTask.Input'
      responses:
        '200':
          description: 'Outcome `found`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.GetTask.found.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.GetTask.not-found.Response'
        '409':
          description: 'Outcome `other-tenant`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.GetTask.other-tenant.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported` and `extension-required`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.tasks.GetTask.extension-required.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.GetTask.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.GetTask.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.GetTask.extension-required.Response'
  /tasks/commands/tasks:reject:
    post:
      operationId: a2a.tasks.RejectTask
      summary: Reject task
      description: The agent declines the task (TASK_STATE_REJECTED).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.RejectTask` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.RejectTask.Input'
      responses:
        '202':
          description: 'Outcome `moved`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RejectTask.moved.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RejectTask.not-found.Response'
        '409':
          description: 'Outcome `wrong-state`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RejectTask.wrong-state.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/commands/tasks:require_auth:
    post:
      operationId: a2a.tasks.RequireAuth
      summary: Require authorization
      description: The agent needs the client to authorize (TASK_STATE_AUTH_REQUIRED, section 7.6).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.RequireAuth` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.RequireAuth.Input'
      responses:
        '202':
          description: 'Outcome `moved`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RequireAuth.moved.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RequireAuth.not-found.Response'
        '409':
          description: 'Outcome `wrong-state`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RequireAuth.wrong-state.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/commands/tasks:require_input:
    post:
      operationId: a2a.tasks.RequireInput
      summary: Require input
      description: The agent needs more input from the client (TASK_STATE_INPUT_REQUIRED, section 3.4.3).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.RequireInput` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.RequireInput.Input'
      responses:
        '202':
          description: 'Outcome `moved`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RequireInput.moved.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RequireInput.not-found.Response'
        '409':
          description: 'Outcome `wrong-state`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.RequireInput.wrong-state.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/commands/tasks:subscribe:
    post:
      operationId: a2a.tasks.SubscribeToTask
      summary: Subscribe to task
      description: Open a stream of a task's updates, starting with the task itself (A2A v1.0.1 section 3.1.6; JSON-RPC SubscribeToTask; GET /tasks/{id}:subscribe).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Client
      requestBody:
        description: The input `a2a.tasks.SubscribeToTask` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.Input'
      responses:
        '200':
          description: 'Outcome `subscribed`: the branch the specification declares for this input, carried out in this request: the body carries the command''s response under `response`. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.subscribed.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.not-found.Response'
        '409':
          description: 'Outcomes `other-tenant` and `task-terminal`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    other-tenant: '#/components/schemas/a2a.tasks.SubscribeToTask.other-tenant.Response'
                    task-terminal: '#/components/schemas/a2a.tasks.SubscribeToTask.task-terminal.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.other-tenant.Response'
                - $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.task-terminal.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
        '502':
          description: 'Outcomes `version-not-supported`, `extension-required` and `streaming-not-supported`: something outside the request refused. The input was acceptable, so the caller has nothing to correct and a retry is meaningful.'
          content:
            application/json:
              schema:
                discriminator:
                  mapping:
                    extension-required: '#/components/schemas/a2a.tasks.SubscribeToTask.extension-required.Response'
                    streaming-not-supported: '#/components/schemas/a2a.tasks.SubscribeToTask.streaming-not-supported.Response'
                    version-not-supported: '#/components/schemas/a2a.tasks.SubscribeToTask.version-not-supported.Response'
                  propertyName: outcome
                oneOf:
                - $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.version-not-supported.Response'
                - $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.extension-required.Response'
                - $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.streaming-not-supported.Response'
  /tasks/commands/tasks:update_artifact:
    post:
      operationId: a2a.tasks.UpdateArtifact
      summary: Update artifact
      description: The agent generates an artifact of the task, or a chunk of one (TaskArtifactUpdateEvent).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.UpdateArtifact` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.UpdateArtifact.Input'
      responses:
        '202':
          description: 'Outcome `updated`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.UpdateArtifact.updated.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.UpdateArtifact.not-found.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/commands/tasks:work:
    post:
      operationId: a2a.tasks.StartWorking
      summary: Start working
      description: The agent works on the task (TASK_STATE_WORKING).
      tags:
      - tasks
      x-ess-may-invoke:
      - a2a.tasks.Agent
      requestBody:
        description: The input `a2a.tasks.StartWorking` declares.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/a2a.tasks.StartWorking.Input'
      responses:
        '202':
          description: 'Outcome `moved`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.StartWorking.moved.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-invoke` does not list. It is checked before the command runs, so nothing was read, written or published, and the same request from a granted actor is decided by the command. Its body carries `refused` and `actor`, never the `outcome` and `error` a declared branch carries.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
        '404':
          description: 'Outcome `not-found`: the branch the specification declares for this input. Events this branch emits are published to consumers and listed under `published`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.StartWorking.not-found.Response'
        '409':
          description: 'Outcome `wrong-state`: the input was acceptable and the subject is in a state this command does not act from. Resending the same request changes nothing until something else moves it.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.StartWorking.wrong-state.Response'
        '501':
          description: 'No declared outcome: the realization is unfinished. Either a port this command runs reported an unmet obligation, and nothing was written: `committed` is `false`. Or the command''s effect was committed and delivering what this command published to a binding failed: `committed` is `true`, the effect and its events stand, and each binding whose delivery failed keeps its event and is attempted again on a later delivery, while no other binding receives it twice. Do not retry: after a failed delivery a retry performs the command a second time.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  committed:
                    description: '`true` when the command''s effect and events were committed and delivering what it published failed; `false` when an unmet obligation stopped the command before anything was written.'
                    type: boolean
                  refused:
                    description: What was left unfinished, in words.
                    type: string
                required:
                - refused
                - committed
                type: object
  /tasks/views/allPushNotificationConfigs:
    get:
      operationId: a2a.tasks.PushNotificationConfigs
      summary: All push notification configs
      tags:
      - tasks
      x-ess-may-read:
      - a2a.tasks.Agent
      x-ess-consistency: read_your_writes
      responses:
        '200':
          description: 'Every row of `a2a.tasks.PushNotificationConfigs`, a projection of `a2a.tasks.PushNotificationConfig`. Contains every instance. Read-your-writes: a caller that has just issued a command sees its effect here.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigs.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-read` does not list. It is checked before the view is read, so no row was read, and the same request from a granted actor answers the rows. Its body is the one a command answers an ungranted actor.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
  /tasks/views/allTasks:
    get:
      operationId: a2a.tasks.AllTasks
      summary: All tasks
      tags:
      - tasks
      x-ess-may-read:
      - a2a.tasks.Agent
      x-ess-consistency: read_your_writes
      responses:
        '200':
          description: 'Every row of `a2a.tasks.AllTasks`, a projection of `a2a.tasks.Task`. Contains every instance. Read-your-writes: a caller that has just issued a command sees its effect here.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.AllTasks.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-read` does not list. It is checked before the view is read, so no row was read, and the same request from a granted actor answers the rows. Its body is the one a command answers an ungranted actor.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
  /tasks/views/pushNotificationConfigs:
    get:
      operationId: a2a.tasks.TaskPushNotificationConfigs
      summary: List push notification configs
      tags:
      - tasks
      x-ess-may-read:
      - a2a.tasks.Client
      x-ess-consistency: read_your_writes
      parameters:
      - name: task_id
        in: query
        description: Read by the view's filter as `param.task_id`; it selects which rows the view holds.
        required: true
        schema:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
      - name: tenant
        in: query
        description: Read by the view's filter as `param.tenant`; it selects which rows the view holds.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: 'Every row of `a2a.tasks.TaskPushNotificationConfigs`, a projection of `a2a.tasks.PushNotificationConfig`. Contains the instances where `(task_id == param.task_id and ((defined(param.tenant) and defined(tenant) and tenant == param.tenant) or (not (defined(param.tenant)) and not (defined(tenant)))))` holds. Read-your-writes: a caller that has just issued a command sees its effect here.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.TaskPushNotificationConfigs.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-read` does not list. It is checked before the view is read, so no row was read, and the same request from a granted actor answers the rows. Its body is the one a command answers an ungranted actor.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
  /tasks/views/tasks:
    get:
      operationId: a2a.tasks.Tasks
      summary: List tasks
      description: The tasks visible to the client, filtered by context, state and status time (A2A v1.0.1 section 3.1.4; JSON-RPC ListTasks).
      tags:
      - tasks
      x-ess-may-read:
      - a2a.tasks.Client
      x-ess-consistency: read_your_writes
      parameters:
      - name: contextId
        in: query
        description: Read by the view's filter as `param.context_id`; it selects which rows the view holds.
        required: false
        schema:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
      - name: status
        in: query
        description: Read by the view's filter as `param.status`; it selects which rows the view holds.
        required: false
        schema:
          $ref: '#/components/schemas/a2a.tasks.Task.State'
      - name: statusTimestampAfter
        in: query
        description: Read by the view's filter as `param.status_timestamp_after`; it selects which rows the view holds.
        required: false
        schema:
          x-ess-field: status_timestamp_after
          type: string
          format: date-time
      - name: tenant
        in: query
        description: Read by the view's filter as `param.tenant`; it selects which rows the view holds.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: 'Every row of `a2a.tasks.Tasks`, a projection of `a2a.tasks.Task`. Contains the instances where `((not (defined(param.context_id)) or context_id == param.context_id) and (not (defined(param.status)) or state == param.status) and (not (defined(param.status_timestamp_after)) or status_timestamp >= param.status_timestamp_after as timestamp) and ((defined(param.tenant) and defined(tenant) and tenant == param.tenant) or (not (defined(param.tenant)) and not (defined(tenant)))))` holds. Read-your-writes: a caller that has just issued a command sees its effect here.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/a2a.tasks.Tasks.Response'
        '403':
          description: 'No declared outcome: the standard refusal for an actor no grant admits: the request was authenticated as no actor, or as one `x-ess-may-read` does not list. It is checked before the view is read, so no row was read, and the same request from a granted actor answers the rows. Its body is the one a command answers an ungranted actor.'
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  actor:
                    description: The qualified name of the actor the request was authenticated as, or null where it was authenticated as none.
                    type:
                    - string
                    - 'null'
                  refused:
                    description: The standard refusal for an actor no grant admits.
                    enum:
                    - not granted
                    type: string
                required:
                - refused
                - actor
                type: object
components:
  schemas:
    a2a.discovery.APIKeySecurityScheme:
      title: APIKeySecurityScheme
      x-ess-name: a2a.discovery.APIKeySecurityScheme
      x-ess-kind: struct
      type: object
      properties:
        description:
          type: string
        location:
          type: string
        name:
          type: string
      required:
      - location
      - name
      additionalProperties: false
    a2a.discovery.AgentCapabilities:
      title: AgentCapabilities
      x-ess-name: a2a.discovery.AgentCapabilities
      x-ess-kind: struct
      type: object
      properties:
        streaming:
          type: boolean
        pushNotifications:
          x-ess-field: push_notifications
          type: boolean
        extensions:
          type: array
          items:
            $ref: '#/components/schemas/a2a.discovery.AgentExtension'
        extendedAgentCard:
          x-ess-field: extended_agent_card
          type: boolean
      additionalProperties: false
    a2a.discovery.AgentCard:
      title: AgentCard
      description: Self-describing manifest of an agent (A2A v1.0.1 section 4.4.1).
      x-ess-name: a2a.discovery.AgentCard
      x-ess-kind: struct
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        supportedInterfaces:
          x-ess-field: supported_interfaces
          type: array
          items:
            $ref: '#/components/schemas/a2a.discovery.AgentInterface'
        provider:
          $ref: '#/components/schemas/a2a.discovery.AgentProvider'
        version:
          type: string
        documentationUrl:
          x-ess-field: documentation_url
          type: string
        capabilities:
          $ref: '#/components/schemas/a2a.discovery.AgentCapabilities'
        securitySchemes:
          x-ess-field: security_schemes
          type: object
          additionalProperties:
            $ref: '#/components/schemas/a2a.discovery.SecurityScheme'
          x-ess-map-key: String
        securityRequirements:
          x-ess-field: security_requirements
          type: array
          items:
            $ref: '#/components/schemas/a2a.discovery.SecurityRequirement'
        defaultInputModes:
          x-ess-field: default_input_modes
          type: array
          items:
            type: string
        defaultOutputModes:
          x-ess-field: default_output_modes
          type: array
          items:
            type: string
        skills:
          type: array
          items:
            $ref: '#/components/schemas/a2a.discovery.AgentSkill'
        signatures:
          type: array
          items:
            $ref: '#/components/schemas/a2a.discovery.AgentCardSignature'
        iconUrl:
          x-ess-field: icon_url
          type: string
      required:
      - name
      - description
      - supportedInterfaces
      - version
      - capabilities
      - defaultInputModes
      - defaultOutputModes
      - skills
      additionalProperties: false
    a2a.discovery.AgentCardSignature:
      title: AgentCardSignature
      x-ess-name: a2a.discovery.AgentCardSignature
      x-ess-kind: struct
      type: object
      properties:
        protected:
          type: string
        signature:
          type: string
        header: {}
      required:
      - protected
      - signature
      additionalProperties: false
    a2a.discovery.AgentExtension:
      title: AgentExtension
      x-ess-name: a2a.discovery.AgentExtension
      x-ess-kind: struct
      type: object
      properties:
        uri:
          type: string
        description:
          type: string
        required:
          type: boolean
        params: {}
      additionalProperties: false
    a2a.discovery.AgentInterface:
      title: AgentInterface
      description: A URL and protocol binding the agent is reached at (proto AgentInterface).
      x-ess-name: a2a.discovery.AgentInterface
      x-ess-kind: struct
      type: object
      properties:
        url:
          type: string
        protocolBinding:
          x-ess-field: protocol_binding
          type: string
        tenant:
          type: string
        protocolVersion:
          x-ess-field: protocol_version
          type: string
      required:
      - url
      - protocolBinding
      - protocolVersion
      additionalProperties: false
    a2a.discovery.AgentProvider:
      title: AgentProvider
      x-ess-name: a2a.discovery.AgentProvider
      x-ess-kind: struct
      type: object
      properties:
        url:
          type: string
        organization:
          type: string
      required:
      - url
      - organization
      additionalProperties: false
    a2a.discovery.AgentSkill:
      title: AgentSkill
      x-ess-name: a2a.discovery.AgentSkill
      x-ess-kind: struct
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        tags:
          type: array
          items:
            type: string
        examples:
          type: array
          items:
            type: string
        inputModes:
          x-ess-field: input_modes
          type: array
          items:
            type: string
        outputModes:
          x-ess-field: output_modes
          type: array
          items:
            type: string
        securityRequirements:
          x-ess-field: security_requirements
          type: array
          items:
            $ref: '#/components/schemas/a2a.discovery.SecurityRequirement'
      required:
      - id
      - name
      - description
      - tags
      additionalProperties: false
    a2a.discovery.AuthorizationCodeOAuthFlow:
      title: AuthorizationCodeOAuthFlow
      x-ess-name: a2a.discovery.AuthorizationCodeOAuthFlow
      x-ess-kind: struct
      type: object
      properties:
        authorizationUrl:
          x-ess-field: authorization_url
          type: string
        tokenUrl:
          x-ess-field: token_url
          type: string
        refreshUrl:
          x-ess-field: refresh_url
          type: string
        scopes:
          type: object
          additionalProperties:
            type: string
          x-ess-map-key: String
        pkceRequired:
          x-ess-field: pkce_required
          type: boolean
      required:
      - authorizationUrl
      - tokenUrl
      - scopes
      additionalProperties: false
    a2a.discovery.ClientCredentialsOAuthFlow:
      title: ClientCredentialsOAuthFlow
      x-ess-name: a2a.discovery.ClientCredentialsOAuthFlow
      x-ess-kind: struct
      type: object
      properties:
        tokenUrl:
          x-ess-field: token_url
          type: string
        refreshUrl:
          x-ess-field: refresh_url
          type: string
        scopes:
          type: object
          additionalProperties:
            type: string
          x-ess-map-key: String
      required:
      - tokenUrl
      - scopes
      additionalProperties: false
    a2a.discovery.DeviceCodeOAuthFlow:
      title: DeviceCodeOAuthFlow
      x-ess-name: a2a.discovery.DeviceCodeOAuthFlow
      x-ess-kind: struct
      type: object
      properties:
        deviceAuthorizationUrl:
          x-ess-field: device_authorization_url
          type: string
        tokenUrl:
          x-ess-field: token_url
          type: string
        refreshUrl:
          x-ess-field: refresh_url
          type: string
        scopes:
          type: object
          additionalProperties:
            type: string
          x-ess-map-key: String
      required:
      - deviceAuthorizationUrl
      - tokenUrl
      - scopes
      additionalProperties: false
    a2a.discovery.GetExtendedAgentCard.Input:
      title: Get extended agent card input
      description: Return the Agent Card an authenticated client may see, possibly with more skills than the public card (A2A v1.0.1 section 3.1.11; JSON-RPC GetExtendedAgentCard; GET /extendedAgentCard).
      x-ess-name: a2a.discovery.GetExtendedAgentCard
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
      additionalProperties: false
    a2a.discovery.GetExtendedAgentCard.Result:
      title: Get extended agent card response
      description: Return the Agent Card an authenticated client may see, possibly with more skills than the public card (A2A v1.0.1 section 3.1.11; JSON-RPC GetExtendedAgentCard; GET /extendedAgentCard).
      x-ess-name: a2a.discovery.GetExtendedAgentCard
      x-ess-kind: command-response
      type: object
      properties:
        card:
          $ref: '#/components/schemas/a2a.discovery.AgentCard'
      required:
      - card
      additionalProperties: false
    a2a.discovery.GetExtendedAgentCard.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.discovery.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.discovery.GetExtendedAgentCard.not-configured.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent declares the capability but has no extended card configured.'
      properties:
        error:
          const: a2a.discovery.ExtendedAgentCardNotConfigured
          description: 'ExtendedAgentCardNotConfiguredError (JSON-RPC -32007, gRPC FAILED_PRECONDITION, HTTP 400): the agent declares the capability but has no extended card configured.'
          type: string
        outcome:
          const: not-configured
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.discovery.GetExtendedAgentCard.not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the public agent card does not declare capabilities.extendedAgentCard.'
      properties:
        error:
          const: a2a.discovery.UnsupportedOperation
          description: 'UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the agent card does not declare capabilities.extendedAgentCard.'
          type: string
        outcome:
          const: not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.discovery.GetExtendedAgentCard.returned.Response:
      additionalProperties: false
      description: The extended Agent Card. Taken when no other outcome's condition matched.
      properties:
        outcome:
          const: returned
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.discovery.GetExtendedAgentCard.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.discovery.GetExtendedAgentCard.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.discovery.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.discovery.HTTPAuthSecurityScheme:
      title: HTTPAuthSecurityScheme
      x-ess-name: a2a.discovery.HTTPAuthSecurityScheme
      x-ess-kind: struct
      type: object
      properties:
        description:
          type: string
        scheme:
          type: string
        bearerFormat:
          x-ess-field: bearer_format
          type: string
      required:
      - scheme
      additionalProperties: false
    a2a.discovery.ImplicitOAuthFlow:
      title: ImplicitOAuthFlow
      description: Deprecated in A2A v1.0.1.
      x-ess-name: a2a.discovery.ImplicitOAuthFlow
      x-ess-kind: struct
      type: object
      properties:
        authorizationUrl:
          x-ess-field: authorization_url
          type: string
        refreshUrl:
          x-ess-field: refresh_url
          type: string
        scopes:
          type: object
          additionalProperties:
            type: string
          x-ess-map-key: String
      additionalProperties: false
    a2a.discovery.MutualTlsSecurityScheme:
      title: MutualTlsSecurityScheme
      x-ess-name: a2a.discovery.MutualTlsSecurityScheme
      x-ess-kind: struct
      type: object
      properties:
        description:
          type: string
      additionalProperties: false
    a2a.discovery.OAuth2SecurityScheme:
      title: OAuth2SecurityScheme
      x-ess-name: a2a.discovery.OAuth2SecurityScheme
      x-ess-kind: struct
      type: object
      properties:
        description:
          type: string
        flows:
          $ref: '#/components/schemas/a2a.discovery.OAuthFlows'
        oauth2MetadataUrl:
          x-ess-field: oauth2_metadata_url
          type: string
      required:
      - flows
      additionalProperties: false
    a2a.discovery.OAuthFlows:
      title: OAuthFlows
      x-ess-name: a2a.discovery.OAuthFlows
      x-ess-kind: struct
      type: object
      properties:
        authorizationCode:
          $ref: '#/components/schemas/a2a.discovery.AuthorizationCodeOAuthFlow'
          x-ess-field: authorization_code
        clientCredentials:
          $ref: '#/components/schemas/a2a.discovery.ClientCredentialsOAuthFlow'
          x-ess-field: client_credentials
        implicit:
          $ref: '#/components/schemas/a2a.discovery.ImplicitOAuthFlow'
        password:
          $ref: '#/components/schemas/a2a.discovery.PasswordOAuthFlow'
        deviceCode:
          $ref: '#/components/schemas/a2a.discovery.DeviceCodeOAuthFlow'
          x-ess-field: device_code
      additionalProperties: false
    a2a.discovery.OpenIdConnectSecurityScheme:
      title: OpenIdConnectSecurityScheme
      x-ess-name: a2a.discovery.OpenIdConnectSecurityScheme
      x-ess-kind: struct
      type: object
      properties:
        description:
          type: string
        openIdConnectUrl:
          x-ess-field: open_id_connect_url
          type: string
      required:
      - openIdConnectUrl
      additionalProperties: false
    a2a.discovery.PasswordOAuthFlow:
      title: PasswordOAuthFlow
      description: Deprecated in A2A v1.0.1.
      x-ess-name: a2a.discovery.PasswordOAuthFlow
      x-ess-kind: struct
      type: object
      properties:
        tokenUrl:
          x-ess-field: token_url
          type: string
        refreshUrl:
          x-ess-field: refresh_url
          type: string
        scopes:
          type: object
          additionalProperties:
            type: string
          x-ess-map-key: String
      additionalProperties: false
    a2a.discovery.SecurityRequirement:
      title: SecurityRequirement
      x-ess-name: a2a.discovery.SecurityRequirement
      x-ess-kind: struct
      type: object
      properties:
        schemes:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/a2a.discovery.StringList'
          x-ess-map-key: String
      required:
      - schemes
      additionalProperties: false
    a2a.discovery.SecurityScheme:
      title: SecurityScheme
      x-ess-name: a2a.discovery.SecurityScheme
      x-ess-kind: struct
      type: object
      properties:
        apiKeySecurityScheme:
          $ref: '#/components/schemas/a2a.discovery.APIKeySecurityScheme'
          x-ess-field: api_key_security_scheme
        httpAuthSecurityScheme:
          $ref: '#/components/schemas/a2a.discovery.HTTPAuthSecurityScheme'
          x-ess-field: http_auth_security_scheme
        oauth2SecurityScheme:
          $ref: '#/components/schemas/a2a.discovery.OAuth2SecurityScheme'
          x-ess-field: oauth2_security_scheme
        openIdConnectSecurityScheme:
          $ref: '#/components/schemas/a2a.discovery.OpenIdConnectSecurityScheme'
          x-ess-field: open_id_connect_security_scheme
        mtlsSecurityScheme:
          $ref: '#/components/schemas/a2a.discovery.MutualTlsSecurityScheme'
          x-ess-field: mtls_security_scheme
      additionalProperties: false
    a2a.discovery.StringList:
      title: StringList
      x-ess-name: a2a.discovery.StringList
      x-ess-kind: struct
      type: object
      properties:
        list:
          type: array
          items:
            type: string
      required:
      - list
      additionalProperties: false
    a2a.tasks.AllTasks.Response:
      additionalProperties: false
      description: The rows of `a2a.tasks.AllTasks`.
      properties:
        rows:
          description: Every row the projection holds, in the order it holds them.
          items:
            $ref: '#/components/schemas/a2a.tasks.AllTasks.Row'
          type: array
      required:
      - rows
      type: object
    a2a.tasks.AllTasks.Row:
      title: All tasks row
      x-ess-name: a2a.tasks.AllTasks
      x-ess-kind: view-row
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        context_id:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
        tenant:
          type: string
        state:
          $ref: '#/components/schemas/a2a.tasks.Task.State'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
        status_timestamp:
          type: string
          format: date-time
        artifacts:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Artifact'
        history:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Message'
        metadata: {}
      required:
      - id
      - context_id
      - state
      additionalProperties: false
    a2a.tasks.Artifact:
      title: Artifact
      description: An output the agent produced for a task (A2A v1.0.1 section 4.1.7).
      x-ess-name: a2a.tasks.Artifact
      x-ess-kind: struct
      type: object
      properties:
        artifactId:
          x-ess-field: artifact_id
          type: string
        name:
          type: string
        description:
          type: string
        parts:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Part'
        metadata: {}
        extensions:
          type: array
          items:
            type: string
      required:
      - artifactId
      - parts
      additionalProperties: false
    a2a.tasks.AuthenticationInfo:
      title: AuthenticationInfo
      x-ess-name: a2a.tasks.AuthenticationInfo
      x-ess-kind: struct
      type: object
      properties:
        scheme:
          type: string
        credentials:
          type: string
      required:
      - scheme
      additionalProperties: false
    a2a.tasks.CancelTask.Input:
      title: Cancel task input
      description: Ask the agent to cancel a task (A2A v1.0.1 section 3.1.5; JSON-RPC CancelTask; POST /tasks/{id}:cancel).
      x-ess-name: a2a.tasks.CancelTask
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        metadata: {}
      required:
      - id
      additionalProperties: false
    a2a.tasks.CancelTask.Result:
      title: Cancel task response
      description: Ask the agent to cancel a task (A2A v1.0.1 section 3.1.5; JSON-RPC CancelTask; POST /tasks/{id}:cancel).
      x-ess-name: a2a.tasks.CancelTask
      x-ess-kind: command-response
      type: object
      properties:
        task:
          $ref: '#/components/schemas/a2a.tasks.TaskSnapshot'
      required:
      - task
      additionalProperties: false
    a2a.tasks.CancelTask.canceled.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `Canceled`, along `cancel`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: canceled
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.CancelTask.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.CancelTask.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CancelTask.not-cancelable-now.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent cannot cancel the task at its current stage.'
      properties:
        error:
          const: a2a.tasks.TaskNotCancelable
          description: 'TaskNotCancelableError (JSON-RPC -32002, gRPC FAILED_PRECONDITION, HTTP 400): the task is not in a cancelable state.'
          type: string
        outcome:
          const: not-cancelable-now
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CancelTask.not-cancelable.Response:
      additionalProperties: false
      description: The task is in a terminal state, Canceled included. Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskNotCancelable
          description: 'TaskNotCancelableError (JSON-RPC -32002, gRPC FAILED_PRECONDITION, HTTP 400): the task is not in a cancelable state.'
          type: string
        outcome:
          const: not-cancelable
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CancelTask.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CancelTask.other-tenant.Response:
      additionalProperties: false
      description: Taken when the existing subject's stored fields satisfy `((defined(tenant) and defined(input.tenant) and tenant != input.tenant) or (defined(tenant) and not (defined(input.tenant))) or (not (defined(tenant)) and defined(input.tenant)))`.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: other-tenant
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CancelTask.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CompleteTask.Input:
      title: Complete task input
      description: The task finished successfully (TASK_STATE_COMPLETED).
      x-ess-name: a2a.tasks.CompleteTask
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
      required:
      - id
      additionalProperties: false
    a2a.tasks.CompleteTask.moved.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `Completed`, along `complete`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: moved
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.CompleteTask.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CompleteTask.wrong-state.Response:
      additionalProperties: false
      description: Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskStateConflict
          description: The task is not in a state this agent-side move starts from, so nothing moved.
          type: string
        outcome:
          const: wrong-state
          description: Which declared outcome the command took.
        payload:
          $ref: '#/components/schemas/a2a.tasks.TaskStateConflict.Error'
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      - payload
      type: object
    a2a.tasks.ContextId:
      title: ContextId
      description: Identifier grouping related tasks and messages (A2A v1.0.1 section 3.4.1).
      x-ess-name: a2a.tasks.ContextId
      x-ess-kind: newtype
      type: string
    a2a.tasks.CreateTaskPushNotificationConfig.Input:
      title: Create push notification config input
      description: Register a webhook for a task's updates (A2A v1.0.1 section 3.1.7; JSON-RPC CreateTaskPushNotificationConfig; POST /tasks/{task_id}/pushNotificationConfigs).
      x-ess-name: a2a.tasks.CreateTaskPushNotificationConfig
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        url:
          type: string
        token:
          type: string
        authentication:
          $ref: '#/components/schemas/a2a.tasks.AuthenticationInfo'
      required:
      - taskId
      - url
      additionalProperties: false
    a2a.tasks.CreateTaskPushNotificationConfig.Result:
      title: Create push notification config response
      description: Register a webhook for a task's updates (A2A v1.0.1 section 3.1.7; JSON-RPC CreateTaskPushNotificationConfig; POST /tasks/{task_id}/pushNotificationConfigs).
      x-ess-name: a2a.tasks.CreateTaskPushNotificationConfig
      x-ess-kind: command-response
      type: object
      properties:
        config:
          $ref: '#/components/schemas/a2a.tasks.TaskPushNotificationConfig'
      required:
      - config
      additionalProperties: false
    a2a.tasks.CreateTaskPushNotificationConfig.assigned.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.PushNotificationConfig` now exists, in `Active`. Its identity is published as `row` on `a2a.tasks.PushNotificationConfigCreated`. Emits `PushNotificationConfigCreated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: assigned
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.PushNotificationConfigCreated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigCreated.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.CreateTaskPushNotificationConfig.config-limit.Response:
      additionalProperties: false
      description: 'Decided outside the request: the task already holds as many push-notification configurations as the agent keeps, and the request adds one rather than replacing one of the same id.'
      properties:
        error:
          const: a2a.tasks.ResourceExhausted
          description: 'Not an A2A error (gRPC RESOURCE_EXHAUSTED, HTTP 429): the agent already holds as many tasks per tenant, messages per task history, or push-notification configurations per task as it keeps, so the request stored nothing.'
          type: string
        outcome:
          const: config-limit
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CreateTaskPushNotificationConfig.created.Response:
      additionalProperties: false
      description: Taken when `defined(id)` holds of the input. A `a2a.tasks.PushNotificationConfig` now exists, in `Active`. Its identity is published as `row` on `a2a.tasks.PushNotificationConfigCreated`. Emits `PushNotificationConfigCreated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: created
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.PushNotificationConfigCreated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigCreated.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.CreateTaskPushNotificationConfig.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.CreateTaskPushNotificationConfig.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CreateTaskPushNotificationConfig.push-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card does not declare capabilities.pushNotifications.'
      properties:
        error:
          const: a2a.tasks.PushNotificationNotSupported
          description: 'PushNotificationNotSupportedError (JSON-RPC -32003, gRPC FAILED_PRECONDITION, HTTP 400): the agent card does not declare capabilities.pushNotifications.'
          type: string
        outcome:
          const: push-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CreateTaskPushNotificationConfig.task-not-found.Response:
      additionalProperties: false
      description: Taken when no `a2a.tasks.Task` carries the identity `input.task_id` names.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: task-not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.CreateTaskPushNotificationConfig.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.DeleteTaskPushNotificationConfig.Input:
      title: Delete push notification config input
      description: Remove a push-notification configuration; deleting it again has the same effect (A2A v1.0.1 section 3.1.10; JSON-RPC DeleteTaskPushNotificationConfig; DELETE /tasks/{task_id}/pushNotificationConfigs/{id}).
      x-ess-name: a2a.tasks.DeleteTaskPushNotificationConfig
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
      required:
      - taskId
      - id
      additionalProperties: false
    a2a.tasks.DeleteTaskPushNotificationConfig.deleted.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has changed, and its state is unchanged. The instance is the one `task_id` names. Emits `PushNotificationConfigDeleted`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: deleted
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.PushNotificationConfigDeleted
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigDeleted.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.DeleteTaskPushNotificationConfig.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.DeleteTaskPushNotificationConfig.push-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card does not declare capabilities.pushNotifications.'
      properties:
        error:
          const: a2a.tasks.PushNotificationNotSupported
          description: 'PushNotificationNotSupportedError (JSON-RPC -32003, gRPC FAILED_PRECONDITION, HTTP 400): the agent card does not declare capabilities.pushNotifications.'
          type: string
        outcome:
          const: push-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.DeleteTaskPushNotificationConfig.task-not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: task-not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.DeleteTaskPushNotificationConfig.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.FailTask.Input:
      title: Fail task input
      description: The task finished with an error (TASK_STATE_FAILED).
      x-ess-name: a2a.tasks.FailTask
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
      required:
      - id
      additionalProperties: false
    a2a.tasks.FailTask.moved.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `Failed`, along `fail`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: moved
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.FailTask.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.FailTask.wrong-state.Response:
      additionalProperties: false
      description: Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskStateConflict
          description: The task is not in a state this agent-side move starts from, so nothing moved.
          type: string
        outcome:
          const: wrong-state
          description: Which declared outcome the command took.
        payload:
          $ref: '#/components/schemas/a2a.tasks.TaskStateConflict.Error'
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      - payload
      type: object
    a2a.tasks.GetTask.Input:
      title: Get task input
      description: Read a task's current state (A2A v1.0.1 section 3.1.3; JSON-RPC GetTask; GET /tasks/{id}).
      x-ess-name: a2a.tasks.GetTask
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        historyLength:
          x-ess-field: history_length
          type: integer
      required:
      - id
      additionalProperties: false
    a2a.tasks.GetTask.Result:
      title: Get task response
      description: Read a task's current state (A2A v1.0.1 section 3.1.3; JSON-RPC GetTask; GET /tasks/{id}).
      x-ess-name: a2a.tasks.GetTask
      x-ess-kind: command-response
      type: object
      properties:
        task:
          $ref: '#/components/schemas/a2a.tasks.TaskSnapshot'
      required:
      - task
      additionalProperties: false
    a2a.tasks.GetTask.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTask.found.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. The existing `a2a.tasks.Task` is preserved without an error or event. The instance is the one `id` names.
      properties:
        outcome:
          const: found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.GetTask.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.GetTask.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTask.other-tenant.Response:
      additionalProperties: false
      description: Taken when the existing subject's stored fields satisfy `((defined(tenant) and defined(input.tenant) and tenant != input.tenant) or (defined(tenant) and not (defined(input.tenant))) or (not (defined(tenant)) and defined(input.tenant)))`.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: other-tenant
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTask.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTaskPushNotificationConfig.Input:
      title: Get push notification config input
      description: Read one push-notification configuration (A2A v1.0.1 section 3.1.8; JSON-RPC GetTaskPushNotificationConfig; GET /tasks/{task_id}/pushNotificationConfigs/{id}).
      x-ess-name: a2a.tasks.GetTaskPushNotificationConfig
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
      required:
      - taskId
      - id
      additionalProperties: false
    a2a.tasks.GetTaskPushNotificationConfig.Result:
      title: Get push notification config response
      description: Read one push-notification configuration (A2A v1.0.1 section 3.1.8; JSON-RPC GetTaskPushNotificationConfig; GET /tasks/{task_id}/pushNotificationConfigs/{id}).
      x-ess-name: a2a.tasks.GetTaskPushNotificationConfig
      x-ess-kind: command-response
      type: object
      properties:
        config:
          $ref: '#/components/schemas/a2a.tasks.TaskPushNotificationConfig'
      required:
      - config
      additionalProperties: false
    a2a.tasks.GetTaskPushNotificationConfig.config-not-found.Response:
      additionalProperties: false
      description: Taken when, of the `a2a.tasks.PushNotificationConfig` rows whose stored fields satisfy `(task_id == input.task_id and config_id == input.id)` before the outcome, no row is selected.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: config-not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTaskPushNotificationConfig.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTaskPushNotificationConfig.found.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. The existing `a2a.tasks.Task` is preserved without an error or event. The instance is the one `task_id` names.
      properties:
        outcome:
          const: found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.GetTaskPushNotificationConfig.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.GetTaskPushNotificationConfig.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTaskPushNotificationConfig.push-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card does not declare capabilities.pushNotifications.'
      properties:
        error:
          const: a2a.tasks.PushNotificationNotSupported
          description: 'PushNotificationNotSupportedError (JSON-RPC -32003, gRPC FAILED_PRECONDITION, HTTP 400): the agent card does not declare capabilities.pushNotifications.'
          type: string
        outcome:
          const: push-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.GetTaskPushNotificationConfig.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.ListTaskPushNotificationConfigs.Input:
      title: List push notification configs input
      description: Read every active push-notification configuration of a task (A2A v1.0.1 section 3.1.9; JSON-RPC ListTaskPushNotificationConfigs; GET /tasks/{task_id}/pushNotificationConfigs).
      x-ess-name: a2a.tasks.ListTaskPushNotificationConfigs
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        pageSize:
          x-ess-field: page_size
          type: integer
        pageToken:
          x-ess-field: page_token
          type: string
      required:
      - taskId
      additionalProperties: false
    a2a.tasks.ListTaskPushNotificationConfigs.Result:
      title: List push notification configs response
      description: Read every active push-notification configuration of a task (A2A v1.0.1 section 3.1.9; JSON-RPC ListTaskPushNotificationConfigs; GET /tasks/{task_id}/pushNotificationConfigs).
      x-ess-name: a2a.tasks.ListTaskPushNotificationConfigs
      x-ess-kind: command-response
      type: object
      properties:
        configs:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.TaskPushNotificationConfig'
        nextPageToken:
          x-ess-field: next_page_token
          type: string
      additionalProperties: false
    a2a.tasks.ListTaskPushNotificationConfigs.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.ListTaskPushNotificationConfigs.listed.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. The existing `a2a.tasks.Task` is preserved without an error or event. The instance is the one `task_id` names.
      properties:
        outcome:
          const: listed
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.ListTaskPushNotificationConfigs.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.ListTaskPushNotificationConfigs.other-tenant.Response:
      additionalProperties: false
      description: Taken when the existing subject's stored fields satisfy `((defined(tenant) and defined(input.tenant) and tenant != input.tenant) or (defined(tenant) and not (defined(input.tenant))) or (not (defined(tenant)) and defined(input.tenant)))`.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: other-tenant
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.ListTaskPushNotificationConfigs.push-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card does not declare capabilities.pushNotifications.'
      properties:
        error:
          const: a2a.tasks.PushNotificationNotSupported
          description: 'PushNotificationNotSupportedError (JSON-RPC -32003, gRPC FAILED_PRECONDITION, HTTP 400): the agent card does not declare capabilities.pushNotifications.'
          type: string
        outcome:
          const: push-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.ListTaskPushNotificationConfigs.task-not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: task-not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.ListTaskPushNotificationConfigs.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.Message:
      title: Message
      description: One turn of communication between client and agent (A2A v1.0.1 section 4.1.4).
      x-ess-name: a2a.tasks.Message
      x-ess-kind: struct
      type: object
      properties:
        messageId:
          x-ess-field: message_id
          type: string
        contextId:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        role:
          $ref: '#/components/schemas/a2a.tasks.Role'
        parts:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Part'
        metadata: {}
        extensions:
          type: array
          items:
            type: string
        referenceTaskIds:
          x-ess-field: reference_task_ids
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.TaskId'
      required:
      - messageId
      - role
      - parts
      additionalProperties: false
    a2a.tasks.MessageStreamResponse.Event:
      title: Message stream response payload
      description: One element of the stream SendStreamingMessage answers with (proto StreamResponse; A2A v1.0.1 sections 3.1.2 and 3.2.3).
      x-ess-name: a2a.tasks.MessageStreamResponse
      x-ess-kind: event-payload
      type: object
      properties:
        task:
          $ref: '#/components/schemas/a2a.tasks.TaskSnapshot'
        message:
          $ref: '#/components/schemas/a2a.tasks.Message'
        statusUpdate:
          $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdateEvent'
          x-ess-field: status_update
        artifactUpdate:
          $ref: '#/components/schemas/a2a.tasks.TaskArtifactUpdateEvent'
          x-ess-field: artifact_update
      additionalProperties: false
    a2a.tasks.Part:
      title: Part
      description: One piece of content in a message or artifact (A2A v1.0.1 section 4.1.6).
      x-ess-name: a2a.tasks.Part
      x-ess-kind: struct
      type: object
      properties:
        text:
          type: string
        raw:
          type: string
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          contentEncoding: base64
        url:
          type: string
        data: {}
        metadata: {}
        filename:
          type: string
        mediaType:
          x-ess-field: media_type
          type: string
      additionalProperties: false
    a2a.tasks.PushNotificationConfig.State:
      title: State
      x-ess-name: a2a.tasks.PushNotificationConfig.State
      x-ess-kind: enum
      type: string
      enum:
      - Active
    a2a.tasks.PushNotificationConfigCreated.Event:
      title: PushNotificationConfigCreated payload
      x-ess-name: a2a.tasks.PushNotificationConfigCreated
      x-ess-kind: event-payload
      type: object
      properties:
        row:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigRow'
        config_id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
        task_id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
      required:
      - row
      - config_id
      - task_id
      additionalProperties: false
    a2a.tasks.PushNotificationConfigDeleted.Event:
      title: PushNotificationConfigDeleted payload
      x-ess-name: a2a.tasks.PushNotificationConfigDeleted
      x-ess-kind: event-payload
      type: object
      properties:
        config_id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
        task_id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
      required:
      - config_id
      - task_id
      additionalProperties: false
    a2a.tasks.PushNotificationConfigId:
      title: PushNotificationConfigId
      x-ess-name: a2a.tasks.PushNotificationConfigId
      x-ess-kind: newtype
      type: string
    a2a.tasks.PushNotificationConfigRow:
      title: PushNotificationConfigRow
      x-ess-name: a2a.tasks.PushNotificationConfigRow
      x-ess-kind: newtype
      type: string
    a2a.tasks.PushNotificationConfigs.Response:
      additionalProperties: false
      description: The rows of `a2a.tasks.PushNotificationConfigs`.
      properties:
        rows:
          description: Every row the projection holds, in the order it holds them.
          items:
            $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigs.Row'
          type: array
      required:
      - rows
      type: object
    a2a.tasks.PushNotificationConfigs.Row:
      title: All push notification configs row
      x-ess-name: a2a.tasks.PushNotificationConfigs
      x-ess-kind: view-row
      type: object
      properties:
        row:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigRow'
        config_id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
        state:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfig.State'
        task_id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        tenant:
          type: string
        url:
          type: string
        token:
          type: string
        authentication:
          $ref: '#/components/schemas/a2a.tasks.AuthenticationInfo'
      required:
      - row
      - config_id
      - state
      - task_id
      - url
      additionalProperties: false
    a2a.tasks.RejectTask.Input:
      title: Reject task input
      description: The agent declines the task (TASK_STATE_REJECTED).
      x-ess-name: a2a.tasks.RejectTask
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
      required:
      - id
      additionalProperties: false
    a2a.tasks.RejectTask.moved.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `Rejected`, along `reject`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: moved
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.RejectTask.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.RejectTask.wrong-state.Response:
      additionalProperties: false
      description: Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskStateConflict
          description: The task is not in a state this agent-side move starts from, so nothing moved.
          type: string
        outcome:
          const: wrong-state
          description: Which declared outcome the command took.
        payload:
          $ref: '#/components/schemas/a2a.tasks.TaskStateConflict.Error'
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      - payload
      type: object
    a2a.tasks.RequireAuth.Input:
      title: Require authorization input
      description: The agent needs the client to authorize (TASK_STATE_AUTH_REQUIRED, section 7.6).
      x-ess-name: a2a.tasks.RequireAuth
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
      required:
      - id
      additionalProperties: false
    a2a.tasks.RequireAuth.moved.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `AuthRequired`, along `require_auth`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: moved
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.RequireAuth.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.RequireAuth.wrong-state.Response:
      additionalProperties: false
      description: Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskStateConflict
          description: The task is not in a state this agent-side move starts from, so nothing moved.
          type: string
        outcome:
          const: wrong-state
          description: Which declared outcome the command took.
        payload:
          $ref: '#/components/schemas/a2a.tasks.TaskStateConflict.Error'
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      - payload
      type: object
    a2a.tasks.RequireInput.Input:
      title: Require input input
      description: The agent needs more input from the client (TASK_STATE_INPUT_REQUIRED, section 3.4.3).
      x-ess-name: a2a.tasks.RequireInput
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
      required:
      - id
      additionalProperties: false
    a2a.tasks.RequireInput.moved.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `InputRequired`, along `require_input`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: moved
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.RequireInput.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.RequireInput.wrong-state.Response:
      additionalProperties: false
      description: Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskStateConflict
          description: The task is not in a state this agent-side move starts from, so nothing moved.
          type: string
        outcome:
          const: wrong-state
          description: Which declared outcome the command took.
        payload:
          $ref: '#/components/schemas/a2a.tasks.TaskStateConflict.Error'
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      - payload
      type: object
    a2a.tasks.Role:
      title: Role
      x-ess-name: a2a.tasks.Role
      x-ess-kind: enum
      type: string
      enum:
      - ROLE_USER
      - ROLE_AGENT
    a2a.tasks.SendMessage.Input:
      title: Send message input
      description: Send a message to the agent, which answers with a task tracking its work or with a direct message (A2A v1.0.1 section 3.1.1; JSON-RPC SendMessage; POST /message:send).
      x-ess-name: a2a.tasks.SendMessage
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        message:
          $ref: '#/components/schemas/a2a.tasks.Message'
        configuration:
          $ref: '#/components/schemas/a2a.tasks.SendMessageConfiguration'
        metadata: {}
      required:
      - message
      additionalProperties: false
    a2a.tasks.SendMessage.Result:
      title: Send message response
      description: Send a message to the agent, which answers with a task tracking its work or with a direct message (A2A v1.0.1 section 3.1.1; JSON-RPC SendMessage; POST /message:send).
      x-ess-name: a2a.tasks.SendMessage
      x-ess-kind: command-response
      type: object
      properties:
        task:
          $ref: '#/components/schemas/a2a.tasks.TaskSnapshot'
        message:
          $ref: '#/components/schemas/a2a.tasks.Message'
          x-ess-field: reply
      additionalProperties: false
    a2a.tasks.SendMessage.content-type-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: a part''s media type is not supported by the agent.'
      properties:
        error:
          const: a2a.tasks.ContentTypeNotSupported
          description: 'ContentTypeNotSupportedError (JSON-RPC -32005, gRPC INVALID_ARGUMENT, HTTP 400): a media type of the message''s parts is not supported by the agent.'
          type: string
        outcome:
          const: content-type-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.context-mismatch.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.contextId differs from the contextId of the task message.taskId names.'
      properties:
        error:
          const: a2a.tasks.ContextMismatch
          description: 'InvalidParamsError (JSON-RPC -32602, gRPC INVALID_ARGUMENT, HTTP 400): the message''s contextId differs from the contextId of the task it names.'
          type: string
        outcome:
          const: context-mismatch
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.context-not-accepted.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent cannot accept the contextId the client provided, and generates none in its place (section 3.4.1).'
      properties:
        error:
          const: a2a.tasks.ContextNotAccepted
          description: 'InvalidParamsError (JSON-RPC -32602, gRPC INVALID_ARGUMENT, HTTP 400): the agent cannot accept the contextId the client provided.'
          type: string
        outcome:
          const: context-not-accepted
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.continued.Response:
      additionalProperties: false
      description: 'The agent answers with the task the message continued, in the state it holds. Decided outside the request: message.taskId names a non-terminal task, and the agent takes the message into it.'
      properties:
        outcome:
          const: continued
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SendMessage.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SendMessage.direct-message.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent answers with a message and creates no task.'
      properties:
        outcome:
          const: direct-message
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SendMessage.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SendMessage.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.history-limit.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.taskId names a task whose history already holds as many messages as the agent keeps.'
      properties:
        error:
          const: a2a.tasks.ResourceExhausted
          description: 'Not an A2A error (gRPC RESOURCE_EXHAUSTED, HTTP 429): the agent already holds as many tasks per tenant, messages per task history, or push-notification configurations per task as it keeps, so the request stored nothing.'
          type: string
        outcome:
          const: history-limit
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.task-created.Response:
      additionalProperties: false
      description: A new task. With returnImmediately true the answer carries it as created; otherwise the answer waits until it is terminal or interrupted. Taken when no other outcome's condition matched. A `a2a.tasks.Task` now exists, in `Submitted`. Its identity is published as `task_id` on `a2a.tasks.TaskCreated`. Emits `TaskCreated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: task-created
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskCreated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskCreated.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SendMessage.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SendMessage.task-limit.Response:
      additionalProperties: false
      description: 'Decided outside the request: the message names no task, the agent would create one, and the tenant of the request, or every request without one, already holds as many tasks as the agent keeps.'
      properties:
        error:
          const: a2a.tasks.ResourceExhausted
          description: 'Not an A2A error (gRPC RESOURCE_EXHAUSTED, HTTP 429): the agent already holds as many tasks per tenant, messages per task history, or push-notification configurations per task as it keeps, so the request stored nothing.'
          type: string
        outcome:
          const: task-limit
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.task-not-found.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.taskId names no task the caller can access (section 3.4.2); a task of another tenant is not one (GetTask `other-tenant`).'
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: task-not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.task-terminal.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.taskId names a task in Completed, Failed, Canceled or Rejected.'
      properties:
        error:
          const: a2a.tasks.UnsupportedOperation
          description: 'UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the operation, or an aspect of it, is not supported by this agent.'
          type: string
        outcome:
          const: task-terminal
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessage.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendMessageConfiguration:
      title: SendMessageConfiguration
      x-ess-name: a2a.tasks.SendMessageConfiguration
      x-ess-kind: struct
      type: object
      properties:
        acceptedOutputModes:
          x-ess-field: accepted_output_modes
          type: array
          items:
            type: string
        taskPushNotificationConfig:
          $ref: '#/components/schemas/a2a.tasks.TaskPushNotificationConfig'
          x-ess-field: task_push_notification_config
        historyLength:
          x-ess-field: history_length
          type: integer
        returnImmediately:
          x-ess-field: return_immediately
          type: boolean
      additionalProperties: false
    a2a.tasks.SendStreamingMessage.Input:
      title: Send streaming message input
      description: 'Send a message and stream the answer: one message, or the task followed by its status and artifact updates until it is terminal (A2A v1.0.1 section 3.1.2; JSON-RPC SendStreamingMessage; POST /message:stream).'
      x-ess-name: a2a.tasks.SendStreamingMessage
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        message:
          $ref: '#/components/schemas/a2a.tasks.Message'
        configuration:
          $ref: '#/components/schemas/a2a.tasks.SendMessageConfiguration'
        metadata: {}
      required:
      - message
      additionalProperties: false
    a2a.tasks.SendStreamingMessage.Result:
      title: Send streaming message response
      description: 'Send a message and stream the answer: one message, or the task followed by its status and artifact updates until it is terminal (A2A v1.0.1 section 3.1.2; JSON-RPC SendStreamingMessage; POST /message:stream).'
      x-ess-name: a2a.tasks.SendStreamingMessage
      x-ess-kind: command-response
      type: object
      properties:
        task:
          $ref: '#/components/schemas/a2a.tasks.TaskSnapshot'
        message:
          $ref: '#/components/schemas/a2a.tasks.Message'
          x-ess-field: reply
      additionalProperties: false
    a2a.tasks.SendStreamingMessage.content-type-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: a part''s media type is not supported by the agent.'
      properties:
        error:
          const: a2a.tasks.ContentTypeNotSupported
          description: 'ContentTypeNotSupportedError (JSON-RPC -32005, gRPC INVALID_ARGUMENT, HTTP 400): a media type of the message''s parts is not supported by the agent.'
          type: string
        outcome:
          const: content-type-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.context-mismatch.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.contextId differs from the contextId of the task message.taskId names.'
      properties:
        error:
          const: a2a.tasks.ContextMismatch
          description: 'InvalidParamsError (JSON-RPC -32602, gRPC INVALID_ARGUMENT, HTTP 400): the message''s contextId differs from the contextId of the task it names.'
          type: string
        outcome:
          const: context-mismatch
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.context-not-accepted.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent cannot accept the contextId the client provided, and generates none in its place (section 3.4.1).'
      properties:
        error:
          const: a2a.tasks.ContextNotAccepted
          description: 'InvalidParamsError (JSON-RPC -32602, gRPC INVALID_ARGUMENT, HTTP 400): the agent cannot accept the contextId the client provided.'
          type: string
        outcome:
          const: context-not-accepted
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.continued.Response:
      additionalProperties: false
      description: 'The agent answers with the task the message continued, in the state it holds. Decided outside the request: message.taskId names a non-terminal task, and the agent takes the message into it. Emits `message:stream`, published to consumers and listed under `published`.'
      properties:
        outcome:
          const: continued
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.MessageStreamResponse
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.MessageStreamResponse.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SendStreamingMessage.direct-message.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent answers with a message and creates no task. Emits `message:stream`, published to consumers and listed under `published`.'
      properties:
        outcome:
          const: direct-message
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.MessageStreamResponse
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.MessageStreamResponse.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SendStreamingMessage.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.history-limit.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.taskId names a task whose history already holds as many messages as the agent keeps.'
      properties:
        error:
          const: a2a.tasks.ResourceExhausted
          description: 'Not an A2A error (gRPC RESOURCE_EXHAUSTED, HTTP 429): the agent already holds as many tasks per tenant, messages per task history, or push-notification configurations per task as it keeps, so the request stored nothing.'
          type: string
        outcome:
          const: history-limit
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.streaming-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card does not declare capabilities.streaming.'
      properties:
        error:
          const: a2a.tasks.UnsupportedOperation
          description: 'UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the operation, or an aspect of it, is not supported by this agent.'
          type: string
        outcome:
          const: streaming-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.task-created.Response:
      additionalProperties: false
      description: A new task in Submitted; the agent works on it after the answer. Taken when no other outcome's condition matched. A `a2a.tasks.Task` now exists, in `Submitted`. Its identity is published as `task_id` on `a2a.tasks.TaskCreated`. Emits `TaskCreated` and `message:stream`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: task-created
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 2
          minItems: 2
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskCreated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskCreated.Event'
            required:
            - event
            - payload
            type: object
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.MessageStreamResponse
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.MessageStreamResponse.Event'
            required:
            - event
            - payload
            type: object
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SendStreamingMessage.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SendStreamingMessage.task-limit.Response:
      additionalProperties: false
      description: 'Decided outside the request: the message names no task, the agent would create one, and the tenant of the request, or every request without one, already holds as many tasks as the agent keeps.'
      properties:
        error:
          const: a2a.tasks.ResourceExhausted
          description: 'Not an A2A error (gRPC RESOURCE_EXHAUSTED, HTTP 429): the agent already holds as many tasks per tenant, messages per task history, or push-notification configurations per task as it keeps, so the request stored nothing.'
          type: string
        outcome:
          const: task-limit
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.task-not-found.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.taskId names no task the caller can access (section 3.4.2); a task of another tenant is not one (GetTask `other-tenant`).'
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: task-not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.task-terminal.Response:
      additionalProperties: false
      description: 'Decided outside the request: message.taskId names a task in Completed, Failed, Canceled or Rejected.'
      properties:
        error:
          const: a2a.tasks.UnsupportedOperation
          description: 'UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the operation, or an aspect of it, is not supported by this agent.'
          type: string
        outcome:
          const: task-terminal
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SendStreamingMessage.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.StartWorking.Input:
      title: Start working input
      description: The agent works on the task (TASK_STATE_WORKING).
      x-ess-name: a2a.tasks.StartWorking
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        status_message:
          $ref: '#/components/schemas/a2a.tasks.Message'
      required:
      - id
      additionalProperties: false
    a2a.tasks.StartWorking.moved.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has moved to `Working`, along `work`. The instance is the one `id` names. Emits `TaskStatusUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: moved
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskStatusUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskStatusUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
    a2a.tasks.StartWorking.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.StartWorking.wrong-state.Response:
      additionalProperties: false
      description: Taken when the subject is in a state none of this command's declared moves start from. Which states those are is the lifecycle's answer, not this command's.
      properties:
        error:
          const: a2a.tasks.TaskStateConflict
          description: The task is not in a state this agent-side move starts from, so nothing moved.
          type: string
        outcome:
          const: wrong-state
          description: Which declared outcome the command took.
        payload:
          $ref: '#/components/schemas/a2a.tasks.TaskStateConflict.Error'
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      - payload
      type: object
    a2a.tasks.SubscribeToTask.Input:
      title: Subscribe to task input
      description: Open a stream of a task's updates, starting with the task itself (A2A v1.0.1 section 3.1.6; JSON-RPC SubscribeToTask; GET /tasks/{id}:subscribe).
      x-ess-name: a2a.tasks.SubscribeToTask
      x-ess-kind: command-input
      type: object
      properties:
        tenant:
          type: string
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
      required:
      - id
      additionalProperties: false
    a2a.tasks.SubscribeToTask.Result:
      title: Subscribe to task response
      description: Open a stream of a task's updates, starting with the task itself (A2A v1.0.1 section 3.1.6; JSON-RPC SubscribeToTask; GET /tasks/{id}:subscribe).
      x-ess-name: a2a.tasks.SubscribeToTask
      x-ess-kind: command-response
      type: object
      properties:
        task:
          $ref: '#/components/schemas/a2a.tasks.TaskSnapshot'
      required:
      - task
      additionalProperties: false
    a2a.tasks.SubscribeToTask.extension-required.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card marks an extension required and the request does not declare it.'
      properties:
        error:
          const: a2a.tasks.ExtensionSupportRequired
          description: 'ExtensionSupportRequiredError (JSON-RPC -32008, gRPC FAILED_PRECONDITION, HTTP 400): the agent card marks an extension required and the request does not declare it.'
          type: string
        outcome:
          const: extension-required
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SubscribeToTask.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SubscribeToTask.other-tenant.Response:
      additionalProperties: false
      description: Taken when the existing subject's stored fields satisfy `((defined(tenant) and defined(input.tenant) and tenant != input.tenant) or (defined(tenant) and not (defined(input.tenant))) or (not (defined(tenant)) and defined(input.tenant)))`.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: other-tenant
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SubscribeToTask.streaming-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the agent card does not declare capabilities.streaming.'
      properties:
        error:
          const: a2a.tasks.UnsupportedOperation
          description: 'UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the operation, or an aspect of it, is not supported by this agent.'
          type: string
        outcome:
          const: streaming-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SubscribeToTask.subscribed.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. The existing `a2a.tasks.Task` is preserved without an error or event. The instance is the one `id` names.
      properties:
        outcome:
          const: subscribed
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
        response:
          $ref: '#/components/schemas/a2a.tasks.SubscribeToTask.Result'
      required:
      - outcome
      - published
      - response
      type: object
    a2a.tasks.SubscribeToTask.task-terminal.Response:
      additionalProperties: false
      description: Taken when the existing subject's stored fields satisfy `state in [Completed, Failed, Canceled, Rejected]`.
      properties:
        error:
          const: a2a.tasks.UnsupportedOperation
          description: 'UnsupportedOperationError (JSON-RPC -32004, gRPC FAILED_PRECONDITION, HTTP 400): the operation, or an aspect of it, is not supported by this agent.'
          type: string
        outcome:
          const: task-terminal
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.SubscribeToTask.version-not-supported.Response:
      additionalProperties: false
      description: 'Decided outside the request: the A2A-Version service parameter names a version the agent does not support.'
      properties:
        error:
          const: a2a.tasks.VersionNotSupported
          description: 'VersionNotSupportedError (JSON-RPC -32009, gRPC FAILED_PRECONDITION, HTTP 400): the A2A-Version the request names is not supported by the agent.'
          type: string
        outcome:
          const: version-not-supported
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.Task.State:
      title: State
      x-ess-name: a2a.tasks.Task.State
      x-ess-kind: enum
      type: string
      enum:
      - AuthRequired
      - Canceled
      - Completed
      - Failed
      - InputRequired
      - Rejected
      - Submitted
      - Working
    a2a.tasks.TaskArtifactUpdateEvent:
      title: TaskArtifactUpdateEvent
      description: '"A task delta where an artifact has been generated" (a2a.proto TaskArtifactUpdateEvent; A2A v1.0.1 section 4.2.2).'
      x-ess-name: a2a.tasks.TaskArtifactUpdateEvent
      x-ess-kind: struct
      type: object
      properties:
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        contextId:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
        artifact:
          $ref: '#/components/schemas/a2a.tasks.Artifact'
        append:
          type: boolean
        lastChunk:
          x-ess-field: last_chunk
          type: boolean
        metadata: {}
      required:
      - taskId
      - contextId
      - artifact
      additionalProperties: false
    a2a.tasks.TaskArtifactUpdated.Event:
      title: TaskArtifactUpdated payload
      description: An artifact the agent generated; streamed and pushed as the a2a.proto message TaskArtifactUpdateEvent, whose task_id, context_id and artifact it marks REQUIRED.
      x-ess-name: a2a.tasks.TaskArtifactUpdated
      x-ess-kind: event-payload
      type: object
      properties:
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        contextId:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
        artifact:
          $ref: '#/components/schemas/a2a.tasks.Artifact'
        append:
          type: boolean
        lastChunk:
          x-ess-field: last_chunk
          type: boolean
      required:
      - taskId
      - contextId
      - artifact
      additionalProperties: false
    a2a.tasks.TaskCreated.Event:
      title: TaskCreated payload
      x-ess-name: a2a.tasks.TaskCreated
      x-ess-kind: event-payload
      type: object
      properties:
        task_id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
      required:
      - task_id
      additionalProperties: false
    a2a.tasks.TaskId:
      title: TaskId
      description: Server-generated, opaque task identifier (A2A v1.0.1 section 3.4.2).
      x-ess-name: a2a.tasks.TaskId
      x-ess-kind: newtype
      type: string
    a2a.tasks.TaskPushNotificationConfig:
      title: TaskPushNotificationConfig
      description: The wire form of a push-notification configuration (proto TaskPushNotificationConfig).
      x-ess-name: a2a.tasks.TaskPushNotificationConfig
      x-ess-kind: struct
      type: object
      properties:
        tenant:
          type: string
        id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        url:
          type: string
        token:
          type: string
        authentication:
          $ref: '#/components/schemas/a2a.tasks.AuthenticationInfo'
      required:
      - url
      additionalProperties: false
    a2a.tasks.TaskPushNotificationConfigs.Response:
      additionalProperties: false
      description: The rows of `a2a.tasks.TaskPushNotificationConfigs`.
      properties:
        rows:
          description: Every row the projection holds, in the order it holds them.
          items:
            $ref: '#/components/schemas/a2a.tasks.TaskPushNotificationConfigs.Row'
          type: array
      required:
      - rows
      type: object
    a2a.tasks.TaskPushNotificationConfigs.Row:
      title: List push notification configs row
      x-ess-name: a2a.tasks.TaskPushNotificationConfigs
      x-ess-kind: view-row
      type: object
      properties:
        config_id:
          $ref: '#/components/schemas/a2a.tasks.PushNotificationConfigId'
        task_id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        tenant:
          type: string
        url:
          type: string
        token:
          type: string
        authentication:
          $ref: '#/components/schemas/a2a.tasks.AuthenticationInfo'
      required:
      - config_id
      - task_id
      - url
      additionalProperties: false
    a2a.tasks.TaskSnapshot:
      title: TaskSnapshot
      description: The wire form of a task, proto message Task (A2A v1.0.1 section 4.1.1).
      x-ess-name: a2a.tasks.TaskSnapshot
      x-ess-kind: struct
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        contextId:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
        status:
          $ref: '#/components/schemas/a2a.tasks.TaskStatus'
        artifacts:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Artifact'
        history:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Message'
        metadata: {}
      required:
      - id
      - status
      additionalProperties: false
    a2a.tasks.TaskState:
      title: TaskState
      x-ess-name: a2a.tasks.TaskState
      x-ess-kind: enum
      type: string
      enum:
      - TASK_STATE_SUBMITTED
      - TASK_STATE_WORKING
      - TASK_STATE_COMPLETED
      - TASK_STATE_FAILED
      - TASK_STATE_CANCELED
      - TASK_STATE_INPUT_REQUIRED
      - TASK_STATE_REJECTED
      - TASK_STATE_AUTH_REQUIRED
    a2a.tasks.TaskStateConflict.Error:
      title: TaskStateConflict payload
      description: The task is not in a state this agent-side move starts from, so nothing moved.
      x-ess-name: a2a.tasks.TaskStateConflict
      x-ess-kind: error-payload
      type: object
      properties:
        state:
          $ref: '#/components/schemas/a2a.tasks.Task.State'
      required:
      - state
      additionalProperties: false
    a2a.tasks.TaskStatus:
      title: TaskStatus
      x-ess-name: a2a.tasks.TaskStatus
      x-ess-kind: struct
      type: object
      properties:
        state:
          $ref: '#/components/schemas/a2a.tasks.TaskState'
        message:
          $ref: '#/components/schemas/a2a.tasks.Message'
        timestamp:
          type: string
          format: date-time
      required:
      - state
      additionalProperties: false
    a2a.tasks.TaskStatusUpdateEvent:
      title: TaskStatusUpdateEvent
      description: '"An event sent by the agent to notify the client of a change in a task''s status" (a2a.proto TaskStatusUpdateEvent; A2A v1.0.1 section 4.2.1).'
      x-ess-name: a2a.tasks.TaskStatusUpdateEvent
      x-ess-kind: struct
      type: object
      properties:
        taskId:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
          x-ess-field: task_id
        contextId:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
        status:
          $ref: '#/components/schemas/a2a.tasks.TaskStatus'
        metadata: {}
      required:
      - taskId
      - contextId
      - status
      additionalProperties: false
    a2a.tasks.TaskStatusUpdated.Event:
      title: TaskStatusUpdated payload
      description: Emitted on every lifecycle move; streamed and pushed as TaskStatusUpdateEvent, whose task_id, context_id and status a2a.proto marks REQUIRED.
      x-ess-name: a2a.tasks.TaskStatusUpdated
      x-ess-kind: event-payload
      type: object
      properties:
        task_id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        context_id:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
        status:
          $ref: '#/components/schemas/a2a.tasks.TaskStatus'
      required:
      - task_id
      - context_id
      - status
      additionalProperties: false
    a2a.tasks.Tasks.Response:
      additionalProperties: false
      description: The rows of `a2a.tasks.Tasks`.
      properties:
        rows:
          description: Every row the projection holds, in the order it holds them.
          items:
            $ref: '#/components/schemas/a2a.tasks.Tasks.Row'
          type: array
      required:
      - rows
      type: object
    a2a.tasks.Tasks.Row:
      title: List tasks row
      description: The tasks visible to the client, filtered by context, state and status time (A2A v1.0.1 section 3.1.4; JSON-RPC ListTasks).
      x-ess-name: a2a.tasks.Tasks
      x-ess-kind: view-row
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        contextId:
          $ref: '#/components/schemas/a2a.tasks.ContextId'
          x-ess-field: context_id
        state:
          $ref: '#/components/schemas/a2a.tasks.Task.State'
        statusMessage:
          $ref: '#/components/schemas/a2a.tasks.Message'
          x-ess-field: status_message
        statusTimestamp:
          x-ess-field: status_timestamp
          type: string
          format: date-time
        artifacts:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Artifact'
        history:
          type: array
          items:
            $ref: '#/components/schemas/a2a.tasks.Message'
        metadata: {}
      required:
      - id
      - contextId
      - state
      additionalProperties: false
    a2a.tasks.UpdateArtifact.Input:
      title: Update artifact input
      description: The agent generates an artifact of the task, or a chunk of one (TaskArtifactUpdateEvent).
      x-ess-name: a2a.tasks.UpdateArtifact
      x-ess-kind: command-input
      type: object
      properties:
        id:
          $ref: '#/components/schemas/a2a.tasks.TaskId'
        artifact:
          $ref: '#/components/schemas/a2a.tasks.Artifact'
        append:
          type: boolean
        last_chunk:
          type: boolean
      required:
      - id
      - artifact
      - append
      - last_chunk
      additionalProperties: false
    a2a.tasks.UpdateArtifact.not-found.Response:
      additionalProperties: false
      description: Taken when the request names an identity no record carries.
      properties:
        error:
          const: a2a.tasks.TaskNotFound
          description: 'TaskNotFoundError (JSON-RPC -32001, gRPC NOT_FOUND, HTTP 404): the task, or the push-notification configuration, does not exist or is not accessible to the caller.'
          type: string
        outcome:
          const: not-found
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          maxItems: 0
          type: array
      required:
      - outcome
      - published
      - error
      type: object
    a2a.tasks.UpdateArtifact.updated.Response:
      additionalProperties: false
      description: Taken when no other outcome's condition matched. A `a2a.tasks.Task` has changed, and its state is unchanged. The instance is the one `id` names. Emits `TaskArtifactUpdated`, published to consumers and listed under `published`.
      properties:
        outcome:
          const: updated
          description: Which declared outcome the command took.
        published:
          description: 'Every event this branch published, in publication order: its qualified name and its payload.'
          items: false
          maxItems: 1
          minItems: 1
          prefixItems:
          - additionalProperties: false
            properties:
              event:
                const: a2a.tasks.TaskArtifactUpdated
                type: string
              payload:
                $ref: '#/components/schemas/a2a.tasks.TaskArtifactUpdated.Event'
            required:
            - event
            - payload
            type: object
          type: array
      required:
      - outcome
      - published
      type: object
x-ess-entities:
  a2a.tasks.Artifact:
    title: Artifact
    description: An output the agent produced for a task (A2A v1.0.1 section 4.1.7).
    x-ess-name: a2a.tasks.Artifact
    x-ess-kind: struct
    type: object
    properties:
      artifactId:
        x-ess-field: artifact_id
        type: string
      name:
        type: string
      description:
        type: string
      parts:
        type: array
        items:
          $ref: '#/x-ess-entities/a2a.tasks.Part'
      metadata: {}
      extensions:
        type: array
        items:
          type: string
    required:
    - artifactId
    - parts
    additionalProperties: false
  a2a.tasks.AuthenticationInfo:
    title: AuthenticationInfo
    x-ess-name: a2a.tasks.AuthenticationInfo
    x-ess-kind: struct
    type: object
    properties:
      scheme:
        type: string
      credentials:
        type: string
    required:
    - scheme
    additionalProperties: false
  a2a.tasks.ContextId:
    title: ContextId
    description: Identifier grouping related tasks and messages (A2A v1.0.1 section 3.4.1).
    x-ess-name: a2a.tasks.ContextId
    x-ess-kind: newtype
    type: string
  a2a.tasks.Message:
    title: Message
    description: One turn of communication between client and agent (A2A v1.0.1 section 4.1.4).
    x-ess-name: a2a.tasks.Message
    x-ess-kind: struct
    type: object
    properties:
      messageId:
        x-ess-field: message_id
        type: string
      contextId:
        $ref: '#/x-ess-entities/a2a.tasks.ContextId'
        x-ess-field: context_id
      taskId:
        $ref: '#/x-ess-entities/a2a.tasks.TaskId'
        x-ess-field: task_id
      role:
        $ref: '#/x-ess-entities/a2a.tasks.Role'
      parts:
        type: array
        items:
          $ref: '#/x-ess-entities/a2a.tasks.Part'
      metadata: {}
      extensions:
        type: array
        items:
          type: string
      referenceTaskIds:
        x-ess-field: reference_task_ids
        type: array
        items:
          $ref: '#/x-ess-entities/a2a.tasks.TaskId'
    required:
    - messageId
    - role
    - parts
    additionalProperties: false
  a2a.tasks.Part:
    title: Part
    description: One piece of content in a message or artifact (A2A v1.0.1 section 4.1.6).
    x-ess-name: a2a.tasks.Part
    x-ess-kind: struct
    type: object
    properties:
      text:
        type: string
      raw:
        type: string
        pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
        contentEncoding: base64
      url:
        type: string
      data: {}
      metadata: {}
      filename:
        type: string
      mediaType:
        x-ess-field: media_type
        type: string
    additionalProperties: false
  a2a.tasks.PushNotificationConfig:
    title: PushNotificationConfig
    description: 'A webhook the agent posts task updates to. A2A v1.0.1 section 3.1.7: "The configuration MUST persist until task completion or explicit deletion"; it states no end of a configuration, so it lives until DeleteTaskPushNotificationConfig removes it.'
    x-ess-name: a2a.tasks.PushNotificationConfig
    x-ess-kind: entity
    type: object
    properties:
      row:
        $ref: '#/x-ess-entities/a2a.tasks.PushNotificationConfigRow'
      config_id:
        $ref: '#/x-ess-entities/a2a.tasks.PushNotificationConfigId'
      task_id:
        $ref: '#/x-ess-entities/a2a.tasks.TaskId'
        x-ess-relation:
          name: push_notification_configs
          kind: owns
          source: a2a.tasks.Task
          target: a2a.tasks.PushNotificationConfig
          cardinality: many
          via: task_id
          $ref: '#/x-ess-entities/a2a.tasks.Task'
      tenant:
        type: string
      url:
        type: string
      token:
        type: string
      authentication:
        $ref: '#/x-ess-entities/a2a.tasks.AuthenticationInfo'
      state:
        $ref: '#/x-ess-entities/a2a.tasks.PushNotificationConfig.State'
    required:
    - row
    - config_id
    - task_id
    - url
    - state
    additionalProperties: false
  a2a.tasks.PushNotificationConfig.State:
    title: State
    x-ess-name: a2a.tasks.PushNotificationConfig.State
    x-ess-kind: enum
    type: string
    enum:
    - Active
  a2a.tasks.PushNotificationConfigId:
    title: PushNotificationConfigId
    x-ess-name: a2a.tasks.PushNotificationConfigId
    x-ess-kind: newtype
    type: string
  a2a.tasks.PushNotificationConfigRow:
    title: PushNotificationConfigRow
    x-ess-name: a2a.tasks.PushNotificationConfigRow
    x-ess-kind: newtype
    type: string
  a2a.tasks.Role:
    title: Role
    x-ess-name: a2a.tasks.Role
    x-ess-kind: enum
    type: string
    enum:
    - ROLE_USER
    - ROLE_AGENT
  a2a.tasks.Task:
    title: Task
    description: A stateful unit of work an agent runs for a client. Its lifecycle state is the wire `status.state`; the other status members are fields here.
    x-ess-name: a2a.tasks.Task
    x-ess-kind: entity
    type: object
    properties:
      id:
        $ref: '#/x-ess-entities/a2a.tasks.TaskId'
      context_id:
        $ref: '#/x-ess-entities/a2a.tasks.ContextId'
      tenant:
        type: string
      status_message:
        $ref: '#/x-ess-entities/a2a.tasks.Message'
      status_timestamp:
        type: string
        format: date-time
      artifacts:
        type: array
        items:
          $ref: '#/x-ess-entities/a2a.tasks.Artifact'
      history:
        type: array
        items:
          $ref: '#/x-ess-entities/a2a.tasks.Message'
      metadata: {}
      state:
        $ref: '#/x-ess-entities/a2a.tasks.Task.State'
    required:
    - id
    - context_id
    - state
    additionalProperties: false
  a2a.tasks.Task.State:
    title: State
    x-ess-name: a2a.tasks.Task.State
    x-ess-kind: enum
    type: string
    enum:
    - AuthRequired
    - Canceled
    - Completed
    - Failed
    - InputRequired
    - Rejected
    - Submitted
    - Working
  a2a.tasks.TaskId:
    title: TaskId
    description: Server-generated, opaque task identifier (A2A v1.0.1 section 3.4.2).
    x-ess-name: a2a.tasks.TaskId
    x-ess-kind: newtype
    type: string
