Skip to content

API Endpoint Catalog

EnvironmentHost
Developmenthttps://dev.alpha002.io.arda.cards
Staginghttps://stage.alpha002.io.arda.cards
Productionhttps://prod.alpha001.io.arda.cards
Localhttps://localhost:8889

OpenAPI and Swagger UI links below use relative paths. Prepend the base host for the target environment (e.g., https://stage.alpha002.io.arda.cards/v1/tenant/docs/openApi.json).

URL shape note. The Email module’s endpoints (under Shop Access APIs) use the canonical URL shape /v{module-version}/{domain}/{module}/... defined in Functional Decomposition. Every other Module’s endpoints in this catalog use the pre-canonical shape /v{module-version}/{module}/... — the Domain segment is absent. The divergence and the migration mechanics are documented in Legacy State.

Every Endpoint currently published, with its canonical URL (the shape per Functional Decomposition) and its current URL (the shape live today). Where the two differ, the gap is documented in Legacy State.

The “Collapse pattern” column shows the M / S / E chain shape under the URL collapse rule. Notation: (x/x/x) = M = S = E canonical (pure DataAuthority, all three coincide); m/(x/x) = Module distinct, S = E; m/s/e = all three distinct.

DomainModuleServiceEndpointCanonical URLCurrent URLCollapse pattern
procurementordersorderorder/v1/procurement/orders/order/v1/orderm/(x/x)
referenceitemitemitem/v1/reference/item/v1/item(x/x/x)
referencebusiness-affiliatebusiness-affiliatebusiness-affiliate/v1/reference/business-affiliate/v1/business-affiliate(x/x/x)
resourceskanbankanban-cardkanban-card/v1/resources/kanban/kanban-card/v1/kanbanm/(x/x)
shop-accessemailconfigurationconfiguration/v1/shop-access/email/configuration/v1/shop-access/email/configurationm/(x/x)
shop-accessemailjobjob/v1/shop-access/email/job/v1/shop-access/email/jobm/(x/x)
shop-accessemailjobpostmark-events/v1/shop-access/email/job/postmark-events/v1/shop-access/email/job/postmark-eventsm/s/e
DomainModuleServiceEndpointCanonical URLCurrent URLCollapse pattern
systemtenanttenanttenant/v1/system/tenant/v1/tenant(x/x/x)
systemuser-accountuser-accountuser-account/v1/system/user-account/v1/user-account(x/x/x)
systemagent-foragent-foragent-for/v1/system/agent-for/v1/agent-for(x/x/x)
systeminvitationinvitationinvitation/v1/system/invitation/v1/invitation(x/x/x)

Four configured Modules across both components have no *Endpoint.kt class and therefore no row above. They are catalogued for completeness:

DomainModuleComponentWhy no Endpoint
shop-accesspdf-renderoperationsConsumed in-pod by Item and Kanban via Kotlin references. The Helm apis: entry exists but no REST handler is registered.
resourcesfacilityoperationsNo Module.kt; FacilityService is injected into Kanban / Station at mount time.
resourcesstationoperationsNo Module.kt; StationService is injected into Kanban.
systembatchoperationsNo Module.kt; JobService is injected into Item / Kanban for CSV-upload flows.

Operations, Administration and Management endpoints.

Hosts the Tenant Management Module with API Endpoints for managing organizational units (tenants) within the system.

  • Swagger UI: /v1/tenant/docs/openapi/index.html
  • OpenAPI 3: /v1/tenant/docs/openApi.json
MethodPathSummary
POST/v1/tenant/tenantCreate a new tenant
POST/v1/tenant/tenant/queryQuery tenant entities
GET/v1/tenant/tenant/query/{page}Get a specific page of tenant query results
GET/v1/tenant/tenant/{entity-id}Get detailed information for a single tenant
PUT/v1/tenant/tenant/{entity-id}Update an existing tenant
DELETE/v1/tenant/tenant/{entity-id}Delete a tenant
POST/v1/tenant/tenant/{entity-id}/historyQuery the audit history of a tenant
GET/v1/tenant/tenant/{entity-id}/history/{page}Get a specific page of a tenant’s audit history

Manages user accounts, providing endpoints for registration, profile management, and account status tracking.

  • Swagger UI: /v1/user-account/docs/openapi/index.html
  • OpenAPI 3: /v1/user-account/docs/openApi.json
MethodPathSummary
POST/v1/user-account/user-accountCreate a new user-account
POST/v1/user-account/user-account/queryQuery user-account entities
GET/v1/user-account/user-account/query/{page}Get a specific page of user-account query results
GET/v1/user-account/user-account/{entity-id}Get detailed information for a single user-account
PUT/v1/user-account/user-account/{entity-id}Update an existing user-account
DELETE/v1/user-account/user-account/{entity-id}Delete a user-account
POST/v1/user-account/user-account/{entity-id}/historyQuery the audit history of a user-account
GET/v1/user-account/user-account/{entity-id}/history/{page}Get a specific page of a user-account’s audit history

Handles the associations between users and the tenants they are authorized to act upon (“Agent For” relationships).

  • Swagger UI: /v1/agent-for/docs/openapi/index.html
  • OpenAPI 3: /v1/agent-for/docs/openApi.json
MethodPathSummary
POST/v1/agent-for/agent-forCreate a new agent-for relationship
POST/v1/agent-for/agent-for/queryQuery agent-for entities
GET/v1/agent-for/agent-for/query/{page}Get a specific page of query results
GET/v1/agent-for/agent-for/{entity-id}Get detailed information for a single relationship
PUT/v1/agent-for/agent-for/{entity-id}Update an existing relationship
DELETE/v1/agent-for/agent-for/{entity-id}Delete an agent-for relationship
POST/v1/agent-for/agent-for/{entity-id}/historyQuery the audit history of a relationship
GET/v1/agent-for/agent-for/{entity-id}/history/{page}Get a specific page of audit history

Manages the lifecycle of invitations sent to potential users to join a tenant.

  • Swagger UI: /v1/invitation/docs/openapi/index.html
  • OpenAPI 3: /v1/invitation/docs/openApi.json
MethodPathSummary
POST/v1/invitation/invitationCreate a new invitation
POST/v1/invitation/invitation/queryQuery invitation entities
GET/v1/invitation/invitation/query/{page}Get a specific page of query results
GET/v1/invitation/invitation/{entity-id}Get detailed information for an invitation
PUT/v1/invitation/invitation/{entity-id}Update an existing invitation, used for all lifecycle operations.
DELETE/v1/invitation/invitation/{entity-id}Delete an invitation
POST/v1/invitation/invitation/{entity-id}/historyQuery the audit history of an invitation
GET/v1/invitation/invitation/{entity-id}/history/{page}Get a specific page of audit history

Manages information about business partners, suppliers, and affiliates, including their assigned roles within the organization.

  • Swagger UI: /v1/business-affiliate/docs/openapi/index.html
  • OpenAPI 3: /v1/business-affiliate/docs/openApi.json
MethodPathSummary
POST/v1/business-affiliate/business-affiliateAdd a new business affiliate
GET/v1/business-affiliate/business-affiliate/{entity-id}Get affiliate details by Entity Id
PUT/v1/business-affiliate/business-affiliate/{entity-id}Update affiliate information
DELETE/v1/business-affiliate/business-affiliate/{entity-id}Delete a business affiliate
POST/v1/business-affiliate/business-affiliate/queryQuery business affiliates
GET/v1/business-affiliate/business-affiliate/query/{page}Get a specific page of query results
GET/v1/business-affiliate/business-affiliate/rid/{entity-record-id}Get a specific record by its record Id
GET/v1/business-affiliate/business-affiliate/with-details/{entity-id}Get affiliate details including all enabled roles
POST/v1/business-affiliate/business-affiliate/{entity-id}/historyQuery affiliate audit history
GET/v1/business-affiliate/business-affiliate/{entity-id}/history/{page}Get a specific page of audit history
GET/v1/business-affiliate/business-affiliate/{entity-id}/rolesGet all business roles associated with an affiliate
POST/v1/business-affiliate/business-affiliate/{entity-id}/rolesCreate a new business role for an affiliate
PUT/v1/business-affiliate/business-affiliate/{entity-id}/roles/{business-role-eid}Update an existing business role

Manages the catalog of items, including their properties, supplies, and documentation (labels/breadcrumbs).

  • Swagger UI: /v1/item/docs/openapi/index.html
  • OpenAPI 3: /v1/item/docs/openApi.json
MethodPathSummary
POST/v1/item/itemAdd a new item
GET/v1/item/item/{entity-id}Get item details by Entity Id
PUT/v1/item/item/{entity-id}Update an existing item
DELETE/v1/item/item/{entity-id}Delete an item
POST/v1/item/item/queryQuery items
GET/v1/item/item/query/{page}Get a specific page of query results
GET/v1/item/item/rid/{entity-record-id}Get a specific record by its record Id
GET/v1/item/item/{entity-id}/draftGet the current draft for an item
PUT/v1/item/item/{entity-id}/draftUpdate the draft for an item
POST/v1/item/item/print-labelRequest label printing for a list of items
POST/v1/item/item/print-breadcrumbRequest breadcrumb printing for a list of items
GET/v1/item/item/{parent-item-id}/supplyGet all supplies associated with an item (legacy alias)
POST/v1/item/item/{parent-item-id}/supplyAdd a new supply to an item (legacy alias)
PUT/v1/item/item/{parent-item-id}/supply/{item-supply-id}Update an existing item supply (legacy alias)
DELETE/v1/item/item/{parent-item-id}/supply/{item-supply-id}Remove a supply from an item (legacy alias)
GET/v1/item/lookup-suppliersFuzzy search for supplier names
GET/v1/item/lookup-unitsFuzzy search for unit names
POST/v1/item/upload-job/upload-urlGenerate a URL for CSV upload
GET/v1/item/upload-job/{job-id}Get status of a CSV upload job

Item Supply (canonical reference-data routes)

Section titled “Item Supply (canonical reference-data routes)”

Item supplies are exposed on their own canonical endpoint under the reference-data domain, keyed by the parent item Entity Id. These routes share the same handlers as the legacy /v1/item/item/{parent-item-id}/supply/... aliases listed above; both remain active. The add / update / delete routes accept a mutation-mode query parameter that is retained for compatibility but accepted-and-ignored since 6.0.0 — the former STRICT / LAX values were removed, leaving PROPAGATE canonical create-on-the-fly resolution as the sole mode.

MethodPathSummary
POST/v1/reference-data/item/item-supply/supply/{item-eId}/addAdd a new supply to an item
GET/v1/reference-data/item/item-supply/supply/{item-eId}/listList all supplies associated with an item
PUT/v1/reference-data/item/item-supply/supply/{item-eId}/{supply-id}/updateUpdate an existing item supply
DELETE/v1/reference-data/item/item-supply/supply/{item-eId}/{supply-id}/deleteRemove a supply from an item (clears any referencing slot first)

Manages Kanban cards used for inventory and process tracking, supporting a full lifecycle of events (request, accept, fulfill, use, etc.).

  • Swagger UI: /v1/kanban/docs/openapi/index.html
  • OpenAPI 3: /v1/kanban/docs/openApi.json
MethodPathSummary
POST/v1/kanban/kanban-cardAdd a new Kanban card
GET/v1/kanban/kanban-card/{entity-id}Get card details
PUT/v1/kanban/kanban-card/{entity-id}Update card information
DELETE/v1/kanban/kanban-card/{entity-id}Delete a Kanban card
POST/v1/kanban/kanban-card/queryQuery Kanban cards
GET/v1/kanban/kanban-card/query/{page}Get query results page
GET/v1/kanban/kanban-card/rid/{entity-record-id}Get specific record by ID
POST/v1/kanban/kanban-card/detailsQuery cards and return extended details (including item info)
GET/v1/kanban/kanban-card/details/{card-eid}Get extended details for a specific card
GET/v1/kanban/kanban-card/details/{page}Get a page of extended details
POST/v1/kanban/kanban-card/details/{status}Query detailed cards filtered by status
GET/v1/kanban/kanban-card/for-item/{item-eid}Get all cards associated with a specific item
POST/v1/kanban/kanban-card/summaryGet aggregated status summary of cards
POST/v1/kanban/kanban-card/summary/requestedGet summary of cards in REQUESTED status
POST/v1/kanban/kanban-card/summary/in-processGet summary of cards in IN_PROCESS status
POST/v1/kanban/kanban-card/print-cardRequest printing for a list of cards
PUT/v1/kanban/kanban-card/{card-eid}/notesUpdate private notes/annotations on a card
POST/v1/kanban/kanban-card/{card-eid}/event/requestPost a REQUEST event
POST/v1/kanban/kanban-card/{card-eid}/event/acceptPost an ACCEPT event
POST/v1/kanban/kanban-card/{card-eid}/event/start-processingPost a START_PROCESSING event
POST/v1/kanban/kanban-card/{card-eid}/event/complete-processingPost a COMPLETE_PROCESSING event
POST/v1/kanban/kanban-card/{card-eid}/event/fulfillPost a FULFILL event
POST/v1/kanban/kanban-card/{card-eid}/event/receivePost a RECEIVE event
POST/v1/kanban/kanban-card/{card-eid}/event/usePost a USE event
POST/v1/kanban/kanban-card/{card-eid}/event/depletePost a DEPLETE event
POST/v1/kanban/kanban-card/{card-eid}/event/withdrawPost a WITHDRAW event

Manages the procurement order lifecycle, from creation (optionally from Items or Kanban cards) to submission and receiving.

  • Swagger UI: /v1/order/docs/openapi/index.html
  • OpenAPI 3: /v1/order/docs/openApi.json
MethodPathSummary
POST/v1/order/orderCreate a new order
GET/v1/order/order/{entity-id}Get header details
PUT/v1/order/order/{entity-id}Update order header
DELETE/v1/order/order/{entity-id}Delete an order
POST/v1/order/order/queryQuery orders
GET/v1/order/order/query/{page}Get query results page
GET/v1/order/order/full/{entity-id}Get full order including all line items
GET/v1/order/order/full/rid/{entity-record-id}Get full order by specific record ID
POST/v1/order/order/from-itemsCreate a new order from a list of items
PUT/v1/order/order/from-items/{entity-id}Add lines to existing order from items
POST/v1/order/order/from-kanban-cardsCreate a new order from a list of Kanban cards
PUT/v1/order/order/from-kanban-cards/{entity-id}Add lines to existing order from Kanban cards
POST/v1/order/order/{entity-id}/linesAdd a free-form line to an order
PUT/v1/order/order/{entity-id}/lines/{order-line-eid}Update an existing order line
DELETE/v1/order/order/{entity-id}/lines/{order-line-eid}Remove a line from an order
PUT/v1/order/order/{entity-id}/lines/move-line/{order-line-eid}Change the position of an order line
PUT/v1/order/order/{entity-id}/submitTransition order to SUBMITTED status
PUT/v1/order/order/{entity-id}/acceptedMark order as ACCEPTED by supplier
PUT/v1/order/order/{entity-id}/receiveRecord receiving against order lines
PUT/v1/order/order/{entity-id}/archiveArchive a completed order
PUT/v1/order/order/{entity-id}/annotateAdd a private note to the order
PUT/v1/order/order/{entity-id}/annotate-line/{order-line-eid}Add a private note to a specific line

In-pod printing capability. Consumed by Item (label and breadcrumb printing) and Kanban (card printing) through Kotlin references; no public REST surface today despite the catalog entry. The Swagger UI link is reserved.

APISwagger UI
PDF Renderhttps://stage.alpha002.io.arda.cards/v1/pdf-render/docs/openapi/index.html

Per-tenant email sending capability provided by the ShopAccess/Email Module. Three Endpoints, in the canonical URL shape per Functional Decomposition. The Module covers tenant provisioning, transactional sending, and ingestion of Postmark webhook events (delivery, bounce, complaint, open, click).

  • Swagger UI (Configuration): /v1/shop-access/email/configuration/docs/openapi/index.html
  • Swagger UI (Job): /v1/shop-access/email/job/docs/openapi/index.html
  • Swagger UI (Postmark Events): /v1/shop-access/email/job/postmark-events/docs/openapi/index.html

DataAuthority over the per-tenant EmailConfiguration entity, extended with operator-signal sub-routes that drive the configuration’s two-region (Operational + Administrative) lifecycle state engine.

MethodPathSummary
POST/v1/shop-access/email/configurationCreate a new email configuration for a tenant
GET/v1/shop-access/email/configuration/{entity-id}Get configuration by Entity Id
PUT/v1/shop-access/email/configuration/{entity-id}Update an existing configuration
DELETE/v1/shop-access/email/configuration/{entity-id}Remove a configuration (lifecycle terminal)
POST/v1/shop-access/email/configuration/queryQuery configurations
GET/v1/shop-access/email/configuration/query/{page}Get a specific page of query results
POST/v1/shop-access/email/configuration/{entity-id}/signals/provisionDrive the Operational region into PROVISIONING
POST/v1/shop-access/email/configuration/{entity-id}/signals/re-provisionRestart provisioning from a recoverable failure
POST/v1/shop-access/email/configuration/{entity-id}/signals/re-verifyRe-run Sender Signature verification after a DNS fix
POST/v1/shop-access/email/configuration/{entity-id}/signals/restoreRestore a FAILED configuration to DEGRADED
POST/v1/shop-access/email/configuration/{entity-id}/signals/lockGraceful lock (drains in-flight sends)
POST/v1/shop-access/email/configuration/{entity-id}/signals/force-lockForce lock (cancels in-flight sends)
POST/v1/shop-access/email/configuration/{entity-id}/signals/unlockUnlock the Administrative region
POST/v1/shop-access/email/configuration/{entity-id}/historyQuery the audit history of a configuration
GET/v1/shop-access/email/configuration/{entity-id}/history/{page}Get a specific page of audit history

DataAuthority over the EmailJob entity. Send operations carry a caller-supplied Idempotency-Key. The job-full sub-resource returns the EmailJob plus its associated EmailEvent rows (delivery, bounce, complaint, open, click) in one read.

MethodPathSummary
POST/v1/shop-access/email/jobSubmit a transactional send (Idempotency-Key required)
GET/v1/shop-access/email/job/{entity-id}Get an EmailJob by Entity Id
POST/v1/shop-access/email/job/queryQuery EmailJobs
GET/v1/shop-access/email/job/query/{page}Get a specific page of query results
GET/v1/shop-access/email/job/rid/{entity-record-id}Get a specific record by its Record Id
GET/v1/shop-access/email/job/job-full/by-eid/{entity-id}Get the EmailJob plus its EmailEvents by Entity Id
GET/v1/shop-access/email/job/job-full/by-rid/{entity-record-id}Get the EmailJob plus its EmailEvents by Record Id
POST/v1/shop-access/email/job/{entity-id}/historyQuery the audit history of an EmailJob
GET/v1/shop-access/email/job/{entity-id}/history/{page}Get a specific page of audit history

Ingests Postmark’s transactional-stream webhooks. The {tenant-hash} path segment carries a SHA-256 of the tenant identifier; the in-pod handler verifies the bearer token and the hash. The Endpoint never returns 403 (Postmark interprets 403 as a permanent failure and stops retrying).

MethodPathSummary
POST/v1/shop-access/email/job/postmark-events/{tenant-hash}Receive a Postmark webhook event (Delivery, Bounce, SpamComplaint, Open, Click, SubscriptionChange) for the tenant identified by {tenant-hash}