iRetail PRO store node 1.0.0-m1: proposals

4 operations

← All documentation · Source: contracts openapi/store-v1.yaml at 8000474.

← iRetail PRO store node 1.0.0-m1

Operations

GET /v1/proposals Changes agents proposed that the caller asked for or may approve, newest first (spec/MCP.md).

operationId listProposals

Parameters

Name In Type Description
IRetail-App header string Which app sends the request, at which version: <app>/<version>, optionally a space and (<platform>), as cashier/1.2.0 (windows-x64) or manager/1.2.0 (web). The register (cashier), the back office and the console (manager) and the device gateway (gateway) send it on every request; a request without it is not one of the apps and is served as the current API, and a device token of an app's kind without it is an app of an unknown version; a header that does not parse counts as absent. The node may refuse an app 426 app_update_required by it, except on the operations marked x-app-update-exempt. Not a security boundary (spec/API.md, Transport; spec/RELEASES.md, Who is asking).
status query "pending" | "approved" | "refused" | "failed" Only proposals in this state.
limit query integer Page size, 1–200.
after query string Cursor from the previous page.

Responses

GET /v1/proposals/{id} One proposal.

operationId getProposal

Parameters

Name In Type Description
IRetail-App header string Which app sends the request, at which version: <app>/<version>, optionally a space and (<platform>), as cashier/1.2.0 (windows-x64) or manager/1.2.0 (web). The register (cashier), the back office and the console (manager) and the device gateway (gateway) send it on every request; a request without it is not one of the apps and is served as the current API, and a device token of an app's kind without it is an app of an unknown version; a header that does not parse counts as absent. The node may refuse an app 426 app_update_required by it, except on the operations marked x-app-update-exempt. Not a security boundary (spec/API.md, Transport; spec/RELEASES.md, Who is asking).
id required path string (uuid) Id.

Responses

POST /v1/proposals/{id}/approve Carry the change out as the approver; a refusal of the domain leaves it failed with the error.

Only an employee's session token approves (403 forbidden, details principal employee, for a device's or an integration's), never the kind of principal that proposed (details reason proposer); no GraphQL mutation or MCP tool stands for this operation. The approver must hold every permission the proposal names, checked before the proposal's state (spec/MCP.md, Proposals).

operationId approveProposal

Parameters

Name In Type Description
IRetail-App header string Which app sends the request, at which version: <app>/<version>, optionally a space and (<platform>), as cashier/1.2.0 (windows-x64) or manager/1.2.0 (web). The register (cashier), the back office and the console (manager) and the device gateway (gateway) send it on every request; a request without it is not one of the apps and is served as the current API, and a device token of an app's kind without it is an app of an unknown version; a header that does not parse counts as absent. The node may refuse an app 426 app_update_required by it, except on the operations marked x-app-update-exempt. Not a security boundary (spec/API.md, Transport; spec/RELEASES.md, Who is asking).
id required path string (uuid) Id.
If-Match header string The version the change is based on.

Responses

  • 200 OK Proposal
  • 401 Error (spec/API.md). Error
  • 403 Error (spec/API.md). Error
  • 404 Error (spec/API.md). Error
  • 409 Error (spec/API.md). Error
  • 412 Error (spec/API.md). Error
POST /v1/proposals/{id}/refuse Refuse a proposal with a reason.

The refuser must hold every permission the proposal names.

operationId refuseProposal

Parameters

Name In Type Description
IRetail-App header string Which app sends the request, at which version: <app>/<version>, optionally a space and (<platform>), as cashier/1.2.0 (windows-x64) or manager/1.2.0 (web). The register (cashier), the back office and the console (manager) and the device gateway (gateway) send it on every request; a request without it is not one of the apps and is served as the current API, and a device token of an app's kind without it is an app of an unknown version; a header that does not parse counts as absent. The node may refuse an app 426 app_update_required by it, except on the operations marked x-app-update-exempt. Not a security boundary (spec/API.md, Transport; spec/RELEASES.md, Who is asking).
id required path string (uuid) Id.
If-Match header string The version the change is based on.

Request body required

  • application/json object

Responses

  • 200 OK Proposal
  • 400 Error (spec/API.md). Error
  • 401 Error (spec/API.md). Error
  • 403 Error (spec/API.md). Error
  • 404 Error (spec/API.md). Error
  • 409 Error (spec/API.md). Error
  • 412 Error (spec/API.md). Error

Schemas

Error object

Every error response.

error required string Stable code, see spec/API.md.
message required string English text for logs.
details object

Proposal object

A change an agent proposed, waiting for a person (spec/MCP.md).

id required string (uuid)
tool required string
arguments required object
summary required string
permissions required array of string
origin required "assistant" | "mcp"
conversation_id required string (uuid) | null
created_by required object
status required "pending" | "approved" | "refused" | "failed"
result required object | null
error required null | Error
reason required string | null
created_at required string (date-time)
resolved_by required string (uuid) | null
resolved_at required string (date-time) | null
version required integer

ProposalPage object

items required array of Proposal
next required string | null