HMKHMK / developersÅbn workspace ↗

HARDWARE AT SOFTWARE SPEED

Ét værksted.
Flere indgange.

Arbejd i HMK, gennem dit eget system eller med din AI-assistent. De samme projekter. De samme mennesker. Den samme historik.

HMK appREST APIMCP

Alle tre bruger samme workspace-adgang og fælles servicelag.

Det kan du bygge med nu.

Projekter

Opret og rediger titel og beskrivelse. Hent hardwareområder og de godkendte konfigurationsmuligheder.

Bestillinger

Send en valgt POS-kombination til HMK til gennemgang og følg den fælles ordrestatus.

Samarbejde

Se hvem der ændrede hvad, hvornår og fra hvilken klient. Konfliktkontrol beskytter samtidige rettelser.

Fra adgang til første projekt.

  1. Få din egen HMK-konto tilknyttet det rigtige workspace.
  2. Tilslut en MCP-klient nedenfor, eller registrér en OAuth-klient til din integration.
  3. Log ind hos HMK og godkend workspace og rettigheder.
  4. Hent projekter. Opret eller rediger med dit eget navn som afsender.

Til en almindelig MCP-forbindelse hoster HMK serveren. Du skal ikke installere en printerdriver, køre din egen MCP-server eller udlevere din login-kode til AI’en.

Første API-kald
curl https://app.hmk.dk/api/v1/workspaces \
  -H "Authorization: Bearer $HMK_ACCESS_TOKEN"

Variablen indeholder tokenet fra din OAuth-klient. Opbevar tokens i klientens sikre lager, ikke i chat, kildekode eller URL’er.

Dig, ikke en fælles robotkonto.

En forbindelse handler som den person, der logger ind. Hver bruger har sin egen forbindelse, også i et delt workspace. Hver godkendelse er begrænset til ét workspace og kan afbrydes under Forbundne apps.

Authorization server / resource
https://app.hmk.dk
Discovery
/.well-known/oauth-authorization-server
Resource metadata
/.well-known/oauth-protected-resource
Registrering / godkendelse / token
/oauth/register · /oauth/authorize · /oauth/token
Tilbagekaldelse
POST /oauth/revoke med token og client_id

OAuth-kontrakten

Authorization Code med PKCE S256. Public clients med token_endpoint_auth_method: none og dynamic client registration (DCR). CIMD, client secrets og OpenID Connect er ikke understøttet i denne første version.

Registrér præcise HTTPS callback-URL’er, ingen wildcards. Send state, code_challenge, code_challenge_method=S256, response_type=code, client_id, redirect_uri, scope og resource=https://app.hmk.dk ved godkendelsen. HMK returnerer code, samme state og iss=https://app.hmk.dk. Kontrollér state og issuer i din klient.

Token-kald sendes som formdata med grant_type=authorization_code, code, code_verifier, samme client_id, redirect_uri og resource. Adgangstokens varer én time. Refresh tokens roteres ved brug og varer 30 dage fra udstedelsen. Gem det nye refresh token efter hver fornyelse; det gamle kan ikke genbruges. Forny med grant_type=refresh_token, refresh_token, client_id og resource.

Registrér en egen klient
POST https://app.hmk.dk/oauth/register
Content-Type: application/json

{
  "client_name": "Min HMK-integration",
  "redirect_uris": ["https://example.com/oauth/callback"],
  "token_endpoint_auth_method": "none",
  "grant_types": ["authorization_code", "refresh_token"],
  "response_types": ["code"]
}

Udskift example.com med din egen callback. Klientnavne er selvoplyste, ikke verificerede brandidentiteter; historikken viser også et uforanderligt klient-ID.

projects:read Læs projekter og workspace. Påkrævet grundscope.

projects:write Opret og rediger projektmetadata.

orders:read Læs fælles bestillinger.

orders:write Opret printbestillinger.

activity:read Læs aktivitet med navne og ændringer.

Medlemskab og godkendelse kontrolleres ved hvert kald. Fjernet medlemskab eller tilbagekaldt forbindelse stopper efterfølgende kald, også med et endnu ikke udløbet token. Browserens sessionscookie accepteres ikke som API/MCP-token.

Dit workspace i din samtale.

REMOTE MCP · STREAMABLE HTTPhttps://app.hmk.dk/mcp

HMK hoster en stateless MCP-server. Den bruger JSON-svar over Streamable HTTP; der er ingen langlivet SSE-session eller lokal stdio-server at installere.

ChatGPT

  1. Åbn den del af din konto, hvor du kan tilføje egne MCP-forbindelser/plugins. Adgang afhænger af konto, administratorindstillinger og produktversion.
  2. Tilføj HMK med URL’en ovenfor og OAuth. Vælg DCR, hvis opsætningen giver et valg mellem DCR og CIMD.
  3. Start forbindelsen. Log ind på app.hmk.dk, kontrollér klient og callback, vælg workspace og godkend rettigheder.
  4. Prøv: “Vis mine HMK-projekter og de seneste ændringer.”

Claude

  1. Åbn Settings → Connectors, og tilføj en custom connector.
  2. Angiv navn HMK og den samme MCP-URL.
  3. Forbind med OAuth, log ind hos HMK og vælg workspace.
  4. Aktivér forbindelsen i samtalen og bed om at hente dine projekter.

OpenAI Docs: MCP authentication ↗
Claude: custom connectors ↗
MCP authorization specification ↗

Værktøjer

Værktøjer vises efter de scopes, du har godkendt. API-referencens operationId er også MCP-værktøjets navn. MCP giver ikke videre adgang end appen og har ingen funktion til at ændre printerstatus.

API’et, præcis som det er.

Base-URL: https://app.hmk.dk/api/v1. Alle operationer kræver OAuth bearer token. Schemas nedenfor genereres fra de samme inputdefinitioner, som REST og MCP validerer.

Hent OpenAPI 3.1 ↗

Indlæser reference…

Fortsæt, hvor du slap.

Et projekt oprettet via MCP vises i appen. En rettelse i appen læses af næste API-kald. Appen genindlæser projekter og ordrer hvert 15. sekund, når fanen er synlig, samt ved fokus og genoprettet forbindelse. Det er polling, ikke realtime co-editing.

Projektændringer kræver expectedRevision fra seneste læsning. Hvis en anden har gemt imens, returneres 409 conflict. Hent den nye udgave, sammenlign og aftal rettelsen; gentag ikke blindt med det nye nummer.

Aktivitet gemmes atomisk sammen med ændringen: person, tid, APP/API/MCP, klient-ID, klientnavn og før/efter-værdier. Identiteten kommer fra serveren, aldrig fra et tekstfelt i din forespørgsel. Historikken er append-only gennem API’et, starter med denne version og er ikke en model-rollback-funktion.

Aktivitet vises med 50 poster ad gangen. Brug nextCursor som before for næste side. Lokale kameravinkler, usendte formularer og løse konfiguratorvalg er ikke gemte projektændringer og deles ikke mellem klienter. En bestilling indeholder derimod et fast snapshot af den valgte kombination.

En bestilling er ikke en printstart.

Hent først list_configurations. Vis brugeren projekt, version, kombination og antal, og få bestillingen bekræftet. Send derefter submit_print_order med den returnerede version og et nyt UUID som requestId.

{
  "projectId": "custom-pos",
  "version": "loby-pos-0.6.2",
  "angle": 60,
  "tube": 150,
  "base": "hidden",
  "quantity": 2,
  "note": "Ønskes i sort; aftales med HMK",
  "requestId": "8a973a5a-3e6e-4b7a-a62f-624676d140ba"
}

Rørlængde er i mm. Materiale og farve er indtil videre ønsker i note, ikke verificerede lagervalg. Ved netfejl bruges samme requestId og identiske værdier. Ændret indhold med samme ID afvises. Ordren bliver REQUESTED, ikke PRINTING. Nye hardwareprojekter kan ikke bestilles som print, før et produktionsgrundlag er tilføjet.

Statusser: REQUESTED, ACCEPTED, PRINTING, COMPLETED, CANCELLED. Kun HMK-personale i appen kan ændre status. Pris, færdigtid, betaling, lagerreservation og automatisk printerstart er ikke implementeret her.

Fejl skal kunne håndteres.

  • 400: Kontrollér felter, version, kombination og requestId.
  • 401: Forny token, eller forbind igen, hvis adgang er tilbagekaldt.
  • 403: Forkert workspace eller manglende scope. Bed om relevant adgang, ikke bredere adgang end nødvendigt.
  • 409: Samtidig rettelse eller ID-konflikt. Hent seneste data før handling.
  • 429 / 503: Vent og prøv med backoff. Bevar idempotens-ID ved genforsøg.

MCP-værktøjsfejl returneres som isError med en struktureret fejl i tekstindholdet. HTTP-authentication fejl bruger Bearer challenge og resource metadata. Kør ikke hele produktionsflowet igen, fordi ét statuskald fejlede.

Begrænsninger: 20 KB request body, integrationsrate 300 kald/minut pr. bruger/klient, samt den fælles gateways grænser. Projekt- og ordrelister er endnu ikke paginerede; aktivitet er. Ingen offentlig invitation eller selvregistrering.