Hoppa till innehållet

Ärenden

Support cases the customer opens from their own pages, with the message thread and attachments. Cases land in the same queue as those created inside the ERP and from the support mailbox.

7 anrop GET POST PATCH 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/tickets

List tickets

Returns the authenticated contact's tickets. Contacts with the ViewAllTickets permission see every ticket belonging to their company.

Frågeparametrar

Fält Typ
page integer
pageSize integer
status string
openOnly boolean
search string

Svar

200 PortalTicketListResponse
Fält Typ
items PortalTicketSummary[] · nullable
page integer
pageSize integer
seesAllCompanyTickets boolean
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/tickets" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "items": [
    {
      "attachmentCount": 42,
      "commentCount": 42,
      "createdDate": "2026-06-11T09:24:13.418",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "lastActivityAt": "2026-06-11T09:24:13.418",
      "priority": "string",
      "reportedByContactName": "Anna Svensson",
      "status": "string",
      "ticketNumber": "TIC-2026-0104",
      "title": "string",
      "type": "string"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "seesAllCompanyTickets": true,
  "totalCount": 137
}

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

POST /portal/tickets

Create ticket

Creates a support ticket for the authenticated customer and contact. Order and order line are optional; when given they are verified against the session's customer and the item is taken from the order line.

Body krävs

Fält Typ
description string · nullable
firmwareVersion string · nullable
hardwareRevision string · nullable
orderId string(uuid) · nullable
orderLineId string(uuid) · nullable
serialNumber string · nullable
title string · nullable
type string · nullable

Svar

201 SubmitPortalTicketResponse
Fält Typ
ticketId string(uuid)
ticketNumber 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/tickets" \
  -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
{
  "ticketId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "ticketNumber": "TIC-2026-0104"
}

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

GET /portal/tickets/{id}

Get ticket

Returns one ticket with its attachments and customer-visible messages. Internal notes are never included.

Sökvägsparametrar

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

Svar

200 PortalTicketDetail
Fält Typ
attachments PortalTicketAttachment[] · nullable
canReply boolean
closedAt string(date-time) · nullable
createdDate string(date-time)
description string · nullable
id string(uuid)
messages PortalTicketMessage[] · nullable
priority string · nullable
product PortalTicketProduct
reportedByContactName string · nullable
resolutionNotes string · nullable
resolvedAt string(date-time) · nullable
status string · nullable
ticketNumber string · nullable
title string · nullable
type 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 403 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/portal/tickets/{id}" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "attachments": [
    {
      "contentType": "image/jpeg",
      "createdDate": "2026-06-11T09:24:13.418",
      "fileName": "widget-a-front.jpg",
      "fileSize": 42,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
    }
  ],
  "canReply": true,
  "closedAt": "2026-06-11T09:24:13.418",
  "createdDate": "2026-06-11T09:24:13.418",
  "description": "string",
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "messages": [
    {
      "authorName": "Acme AB",
      "content": "string",
      "createdDate": "2026-06-11T09:24:13.418",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isFromCustomer": true
    }
  ],
  "priority": "string",
  "product": {
    "firmwareVersion": "string",
    "hardwareRevision": "string",
    "itemName": "Widget A",
    "itemNumber": "WIDGET-A",
    "serialNumber": "ABC-001"
  },
  "reportedByContactName": "Anna Svensson",
  "resolutionNotes": "string",
  "resolvedAt": "2026-06-11T09:24:13.418",
  "status": "string",
  "ticketNumber": "TIC-2026-0104",
  "title": "string",
  "type": "string"
}

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

POST /portal/tickets/{id}/attachments

Upload ticket attachment

Uploads one file to the ticket. Multipart form data with the file in the 'file' field.

Sökvägsparametrar

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

Svar

201 AddPortalTicketAttachmentResponse
Fält Typ
attachmentId string(uuid)
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 404 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/tickets/{id}/attachments" \
  -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
{
  "attachmentId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
}

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

GET /portal/tickets/{id}/attachments/{attachmentId}

Download ticket attachment

Downloads one attachment from a ticket the contact is allowed to see.

Sökvägsparametrar

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

Svar

200 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: 401 403 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/portal/tickets/{id}/attachments/{attachmentId}" \
  -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/tickets/{id}/comments

Reply on ticket

Adds a customer-visible message to the ticket thread.

Sökvägsparametrar

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

Body krävs

Fält Typ
content string · nullable

Svar

201 AddPortalTicketCommentResponse
Fält Typ
commentId string(uuid)
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 404 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/tickets/{id}/comments" \
  -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
{
  "commentId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
}

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

PATCH /portal/tickets/{id}/product

Supply product details on ticket

Lets the customer fill in serial number, firmware and hardware revision. The completion is added to the ticket thread so the agent sees it arrive.

Sökvägsparametrar

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

Body krävs

Fält Typ
firmwareVersion string · nullable
hardwareRevision string · nullable
serialNumber 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 403 404 Felhantering

Exempel

curl
curl -X PATCH "https://api.erp.fluit.cloud/ecom/portal/tickets/{id}/product" \
  -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.

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.

PortalTicketAttachment

PortalTicketAttachment
Fält Typ
contentType string · nullable
createdDate string(date-time)
fileName string · nullable
fileSize integer
id string(uuid)

PortalTicketMessage

PortalTicketMessage
Fält Typ
authorName string · nullable
content string · nullable
createdDate string(date-time)
id string(uuid)
isFromCustomer boolean

PortalTicketProduct

PortalTicketProduct
Fält Typ
firmwareVersion string · nullable
hardwareRevision string · nullable
itemName string · nullable
itemNumber string · nullable
serialNumber string · nullable

PortalTicketSummary

PortalTicketSummary
Fält Typ
attachmentCount integer
commentCount integer
createdDate string(date-time)
id string(uuid)
lastActivityAt string(date-time) · nullable
priority string · nullable
reportedByContactName string · nullable
status string · nullable
ticketNumber string · nullable
title string · nullable
type string · nullable