Hoppa till innehållet

API och integrationer Headless commerce Offertförfrågningar

English

Offertförfrågningar

Quote requests: a signed-in customer asks for a price on a set of items, then accepts or declines what comes back. An accepted quote becomes a sales order in the ERP.

5 anrop GET POST Bas-URL https://api.erp.fluit.cloud/ecom

Autentisering, felkoder, rate limits, idempotens och paginering gäller alla anrop och står samlade under Kom igång.

GET /portal/quotes

List quotes

Returns a paginated list of quotes for the authenticated customer.

Frågeparametrar

Fält Typ
page integer
pageSize integer
status string

Svar

200 PortalQuoteListResponse
Fält Typ
items PortalQuote[] · nullable
page integer
pageSize integer
totalCount integer
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/portal/quotes" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "items": [
    {
      "currencyCode": "SEK",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "lineCount": 42,
      "quoteDate": "string",
      "quoteNumber": "Q-2026-0184",
      "status": "string",
      "title": "string",
      "totalAmount": "299.00",
      "totalAmountIncludingTax": "299.00",
      "validUntil": "string"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

GET /portal/quotes/{id}

Get quote detail

Returns the full detail of a specific quote for the authenticated customer.

Sökvägsparametrar

Fält Typ
id Krävs string(uuid)

Svar

200 PortalQuoteDetailResponse
Fält Typ
acceptedAt string · nullable
canAccept boolean
canDecline boolean
contactName string · nullable
currencyCode string · nullable
customerMessage string · nullable
declinedAt string · nullable
description string · nullable
id string(uuid)
lines PortalQuoteLine[] · nullable
quoteDate string · nullable
quoteNumber string · nullable
sentAt string · nullable
status string · nullable
title string · nullable
totalAmount decimal
totalAmountIncludingTax decimal
totalVat decimal
validUntil string · nullable
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 401 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/portal/quotes/{id}" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "acceptedAt": "string",
  "canAccept": true,
  "canDecline": true,
  "contactName": "Anna Svensson",
  "currencyCode": "SEK",
  "customerMessage": "string",
  "declinedAt": "string",
  "description": "string",
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "lines": [
    {
      "description": "string",
      "discountPercent": "12.50",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "itemNumber": "WIDGET-A",
      "lineTotal": "299.00",
      "lineTotalIncludingTax": "299.00",
      "quantity": "10",
      "unitPrice": "299.00"
    }
  ],
  "quoteDate": "string",
  "quoteNumber": "Q-2026-0184",
  "sentAt": "string",
  "status": "string",
  "title": "string",
  "totalAmount": "299.00",
  "totalAmountIncludingTax": "299.00",
  "totalVat": "299.00",
  "validUntil": "string"
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

POST /portal/quotes/{id}/accept

Accept a quote

Accepts a sent quote on behalf of the authenticated customer.

Sökvägsparametrar

Fält Typ
id Krävs string(uuid)

Svar

204 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 400 401 404 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/quotes/{id}/accept" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"

Bas-URL https://api.erp.fluit.cloud/ecom.

POST /portal/quotes/{id}/decline

Decline a quote

Declines a sent quote on behalf of the authenticated customer.

Sökvägsparametrar

Fält Typ
id Krävs string(uuid)

Body

Fält Typ
reason string · nullable

Svar

204 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 400 401 404 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/quotes/{id}/decline" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json

Bas-URL https://api.erp.fluit.cloud/ecom.

POST /portal/quotes/request

Request a quote

Creates a new quote request from the customer portal.

Body krävs

Fält Typ
lines RequestPortalQuoteRequestLine[] · nullable
message string · nullable

Svar

201 RequestPortalQuoteResponse
Fält Typ
quoteId string(uuid)
quoteNumber string · nullable
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 400 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/quotes/request" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 201
{
  "quoteId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "quoteNumber": "Q-2026-0184"
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

Scheman

Objekten som gruppens anrop refererar till. Fälttabellerna ovan går ett steg djupt och länkar hit i stället för att upprepa samma schema på varje endpoint.

PortalQuote

PortalQuoteListItem
Fält Typ
currencyCode string · nullable
id string(uuid)
lineCount integer
quoteDate string · nullable
quoteNumber string · nullable
status string · nullable
title string · nullable
totalAmount decimal
totalAmountIncludingTax decimal
validUntil string · nullable

PortalQuoteLine

PortalQuoteLineResponse
Fält Typ
description string · nullable
discountPercent decimal
id string(uuid)
itemNumber string · nullable
lineTotal decimal
lineTotalIncludingTax decimal
quantity decimal
unitPrice decimal

RequestPortalQuoteRequestLine

RequestPortalQuoteRequestLine
Fält Typ
itemId string(uuid)
note string · nullable
quantity decimal