Alle API-kall i dette dokumentet bruker {{BASE_URL}} som en plassholder for den aktuelle base-URL-en. Denne bør erstattes avhengig av om du opererer i utviklings- eller produksjonsmiljøet.
Testmiljø
Bruk dette miljøet for testing og utviklingsformål. Merk at dette miljøet kan ha andre hastighetsbegrensninger (rate limits) og datasett sammenlignet med produksjon.
Base-URL - https://ja0ot1lhh6.execute-api.eu-central-1.amazonaws.com/test
Produksjonsmiljø
Produksjonsmiljøet er live-miljøet for faktiske brukerinteraksjoner. Vennligst sørg for at riktig URL brukes for dine produksjonsapplikasjoner.
Base-URL - https://6x6hep4ey9.execute-api.eu-central-1.amazonaws.com/production
API-kall
Endepunkter for opplasting
POST Autorisering
Denne POST-forespørselen brukes for å hente et autentiseringstoken. Tokenet må inkluderes i headeren på påfølgende forespørsler for å autorisere tilgang til andre API-endepunkter.
clientId vil bli oppgitt av Inspera Originality.
Eksempel på forespørsel (Request)
curl --request POST \ --url {{BASE_URL}}/token \ --header 'Content-Type: application/json' \ --data '{ "clientId": "a1b2c3d4-e5f6-7890-abcd-1234567890ef", // eksempel på clientId "institutionId": "inst_9876543210" // eksempel på institutionId }'Eksempel på svar (Response)
{ "token": "eyJhbGciOiJIUzI1NiIsIIkpXVCJ9.eyJjbGllbnRJZCI6IkZ....", // eksempel på token "expirationTime": 1759208000000 // utløper 24 timer etter utstedelse }- Mulige feilmeldinger
- 401 unauthorized - Ugyldig clientId
- 404 bad request - Obligatoriske felt var ugyldige
POST Opplasting av dokument
For å starte en likhetskontroll av dokumentet, send en POST-forespørsel til endepunktet /create/submission. Dette fungerer som inngangsporten for at systemet skal kunne prosessere og analysere det innsendte dokumentet. API-svaret inkluderer et message-felt som indikerer om opplastingen var vellykket eller om det oppstod feil. Det inkluderer også en documentId, som fungerer som en unik identifikator for det opplastede dokumentet og kan brukes for fremtidige handlinger. I tillegg gir svaret en presignedS3Url. Denne URL-en er der selve dokumentfilen må lastes opp for at systemet skal kunne behandle den.
Påkrevde og valgfrie forespørselsparametere Påkrevde parametere
- documentTitle: Tittelen på dokumentet som sendes inn.
- author: Navnet på forfatteren av dokumentet.
- email: E-postadressen til studenten som laster opp dokumentet.
- docType: Spesifiserer dokumenttypen ved bruk av støttede MIME-typer (påkrevd, støtter formater som .pdf, .docx, .txt, osv.).
Valgfrie parametere
- translatedLanguage: Brukes for likhetssjekk på tvers av språk. Aksepterer en språkkode. Støttede språk inkluderer: Engelsk (en), Albansk (sq), Tysk (de), Italiensk (it), Litauisk (lt), Spansk (es), Portugisisk (pt), Tsjekkisk (cs), Tyrkisk (tr), Slovakisk (sk), Fransk (fr), Makedonsk (mk), Polsk (pl), Norsk (no), Latvisk (lv), Gresk (el), Nederlandsk (nl), Russisk (ru), Bulgarsk (bg), Ungarsk (hu), Rumensk (ro), Serbisk (sr), Svensk (sv), Finsk (fi), Kroatisk (hr), Dansk (da), Bosnisk (bs), Slovensk (sl), Estisk (et).
- assignmentId: Identifiserer oppgaven dokumentet er knyttet til.
- institutionName: Navnet på institusjonen dokumentet sendes inn fra.
- enableAIDetection: Aktiverer deteksjon av AI-forfatterskap når satt til "true" (standard er deaktivert).
- enableReferenceDetection: Slår av/på deteksjon av referanser (standard er aktivert).
- reSubmissions: Angir hvor mange ganger ny innlevering er tillatt (standard er 1).
- subjectId: ID-en til emnet dokumentet tilhører.
- maxLimit: Angir en øvre grense for antall ord i dokumentet (standard er ingen grense).
- archive: Angir om innleveringen skal arkiveres for kontroll mot andre studentbesvarelser/samhandling (standard er false).
- enableContextSimilarity: Aktiverer analyse av kontekstuell likhet.
- sentenceThresholds: Objekt-parameter som lar deg definere prosentandelen for setningsklassifisering. Krever verdiene contextualSimilaritiesThreshold, alteredTextSimilarityThreshold, og exactMatchSimilarityThreshold som tall.
- sources: Objekt-parameter som lar deg definere kilder som skal inkluderes eller ekskluderes fra originalitetskontrollen. Krever includeSources og excludeSources som lister (arrays) med URL-er som strenger.
- sourcesThreshold: Angitt som et tall; definerer prosentgrensen for når treff i kilder skal ignoreres i rapporten. F.eks. vil en verdi på 5 bety at kilder med under 5 % likhet ikke inkluderes i originalitetsrapporten.
Eksempel på forespørsel (Request)
curl --request POST \ --url {{BASE_URL}}/create/submission \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "documentTitle": "<string>", --> Påkrevd "author": "<string>", ---------> Påkrevd "email": "<string>", ----------> Påkrevd "docType": "<string>" ---------> Påkrevd "translatedLanguage": [ "en", "sq", "et" ], "assignmentId": "<string>", "institutionName": "<string>", "enableAIDetection": true, -> boolean, true eller false "enableReferenceDetection": true, -> boolean, true eller false "reSubmissions": "<number>", "subjectId": "<string>", "maxLimit": "<number>", "archive": true, -> Boolean, true eller false "enableContextSimilarity" -> Boolean, true eller false "sentenceThresholds": { "contextualSimilaritiesThreshold": 65, "alteredTextSimilarityThreshold": 60, "exactMatchSimilarityThreshold": 80 }, "sources": { "excludeSources": [ -> ekskluder kilder fra sjekken "https://eksempelurl1.com", "https://eksempelurl2.com" ], "includeSources": [ -> inkluder kilder i sjekken "https://eksempelurl3.com", "https://eksempelurl4.com" ] }, "sourcesThreshold": 5 -> prosentgrense for kilder }'Eksempel på svar (Response)
{ "documentId": "cmdlxqztb10006xa582hjtkeu", "message": "Your document is uploaded successfully", "presignedS3Url": "<string>" // URL-en der dokumentet må lastes opp. }- Mulige feilmeldinger
- 401 unauthorized - Token har utløpt
- 403 forbidden
- Maksimalt antall innleveringer er nådd
- Dokumenttittelen har færre enn 5 tegn eller mer enn 190 tegn
- Antall ord i dokumentet overskrider tillatt maksimum
- Dokumentstrukturen er ugyldig
- 400 bad request - De påkrevde feltene er ugyldige
GET Kontroll av dokumentstatus (Polling)
For å sjekke statusen på et dokument, send en GET-forespørsel til endepunktet spesifisert i eksempelet, og bruk documentId (mottatt fra forrige svar) som en sti-parameter (path parameter). Dette er en manuell prosess som returnerer gjeldende status for det spesifiserte dokumentet.
Eksempel på forespørsel (Request)
curl --request GET \ --url {{BASE_URL}}/document/%7B{documentId}%7D/checkStatus \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
{ "message": "Document is processed", "status": 1, "similarity": "33.3", "translation_similarity": "62", "Ai_index": "20%", "originality": "High Risk", "characterReplacements": 5, "hiddenText": 2, "imageAsText": 1, "originality_percentage": 80 }- Status
- -1 indikerer at dokumentet fortsatt prosesseres
- 1 indikerer at dokumentet er ferdig prosessert
- 0 indikerer at dokumentet står i kø for prosessering
- 2 indikerer at det har oppstått en feil
- "similarity" indikerer nivået av likhet på originalspråket
- "translation_similarity" indikerer nivået av likhet i oversettelsen (Translation Similarity)
- "ai_index" indikerer nivået av innhold som potensielt er generert av AI
- "originality" indikerer klassifiseringen: High, Medium eller Low Risk
- "characterReplacement" oppgir antall tegn som er byttet ut (manipulering)
- "hiddenText" oppgir antall forekomster av skjult tekst
- "imageAsText" oppgir antall bilder som skjuler vanlig tekst
- Status
- Mulige feilmeldinger
- 400 - Bad Request (Ugyldig forespørsel)
- 401 - Token Has Expired (Token har utløpt)
- 403 - Forbidden (Forbudt/Ingen tilgang)
- 404 - Submission Not Found (Innlevering ikke funnet)
GET Hent URL for rapport
Denne forespørselen initierer Originality Report API-et ved å oppgi de nødvendige sti-parameterne, documentId og mode. Som svar returnerer API-et en sesjonsbasert URL for å få tilgang til rapporten. documentId er en unik identifikator generert av /create/submission-endepunktet, og brukes til å referere til det spesifikke dokumentet det forespørres rapport for. mode-parameteren definerer tilgangsnivået til rapporten; bruk "view" for skrivebeskyttet tilgang, eller "edit" for å aktivere redigeringsmuligheter i rapportgrensesnittet.
Viktig Når dette endepunktet kalles, returnerer det en midlertidig sesjonsbasert URL i stedet for den faktiske rapport-URL-en. Denne sesjons-URL-en er en tidsbegrenset engangslenke som utløser en verifiseringsprosess i bakenden.
Sesjons-ID-er er designet for å utløpe enten:
- Etter at tidsvinduet på 2 minutter har passert
- Umiddelbart etter at den tilhørende originalitetsrapporten har blitt åpnet.
Denne innebygde utløpsmekanismen sikrer at sesjons-ID-en ikke kan gjenbrukes eller deles. Følgelig kan ikke originalitetsrapporter åpnes via delte URL-er, da utløpte sesjons-ID-er gjør slike lenker ugyldige. Denne tidssensitive tilgangsmodellen styrker sikkerheten ved å forhindre uautorisert videresending av rapportlenker.
Eksempel på forespørsel (Request)
curl --request GET \ --url {{BASE_URL}}/document/{documentId}/mode/{mode} \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
{ "url": "<string>" }- Mulige feilmeldinger
- 400 - Bad request (Ugyldig forespørsel)
- 401 - Token has expired (Token har utløpt)
- 403 - Forbidden (Forbudt)
- 404 - Submission not found (Innlevering ikke funnet)
CRUD-endepunkter
POST Autorisering (CRUD)
For å samhandle med CRUD-API-et må klienter først hente et tilgangstoken. Dette gjøres ved å sende en POST-forespørsel til /login-endepunktet med brukerens påloggingsinformasjon. API-et vil validere e-postadressen og passordet, og hvis informasjonen er riktig, returneres et autentiseringstoken som må inkluderes i headeren på alle påfølgende forespørsler. Svaret inkluderer også tilleggsinformasjon, men du trenger bare tokenet for å gå videre med påfølgende kall.
Eksempel på forespørsel (Request)
curl --request POST \ --url {{BASE_URL}}/login \ --header 'Content-Type: application/json' \ --data '{ "email": "eksempel@epost.no", "password": "eksempelpassord" }'Eksempel på svar (Response)
{ "token": "eyJhbDciOiJIUcI1NiDsIIkpXVCJ9.eyJjbGbbbnRJZCI6IkZ..", // eksempel på token }- Mulige feilmeldinger
- 404 - User not found (Bruker ikke funnet)
- 409 - Invalid email format (Ugyldig e-postformat)
- 422 - Invalid credentials (Ugyldig påloggingsinformasjon)
- 500 - Server Error (Serverfeil)
POST Opprett bruker (CRUD)
Dette API-kallet brukes for å opprette en ny bruker på plattformen. Det gjør det mulig å spesifisere generelle detaljer for den nye brukeren, samt tildele eksisterende emner til brukeren via "courses"-parameteren.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request POST \ --url {{BASE_URL}}/user \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "firstName": "Emily", "lastName": "Walker", "email": "ew@email.com" "role": "educator", // kan være enten "student" eller "educator" "status": 1, // Bruk 1 for Aktiv og 0 for Inaktiv "courses": [ "subjectcode", // Emnets unike identifikator, f.eks. CS101 "subjectcode" ] }'Eksempel på svar (Response)
{ "id": "cmg04yzpa0007y6k8r2dq1nvm", "name": "Emily Walker", "email": "ew@email.com", "status": 1, "createdAt": "2025-06-20T11:32:18.446Z", "updatedAt": "2025-07-30T15:48:22.119Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": null, "isDeleted": false }- Mulige feilmeldinger
- 401 - Ikke autorisert til å utføre handlingen
- 402 - Valideringsfeil: Fornavnet må bestå av kun bokstaver og være minst tre tegn langt, mens etternavnet må inneholde kun bokstaver og være minst tre tegn langt.
- 409 - Valideringsfeil: Ugyldig e-postformat, eller e-postadressen eksisterer allerede.
- 500 - Serverfeil
GET Hent bruker via e-post (CRUD)
Dette endepunktet lar deg hente brukerinformasjon basert på e-postadressen deres. Ved å sende en GET-forespørsel til /user-info-endepunktet med brukerens e-post som en spørreparameter (query parameter), kan du hente detaljert informasjon om den spesifikke brukeren.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request GET \ --url '{{BASE_URL}}/user-info?email=%7B{userEmail}%7D' \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
{ "id": "cmg04yzpa0007y6k8r2dq1nvm", "name": "Emily Walker", "email": "ew@email.com", "status": 1, // 1 indikerer Aktiv status, 0 indikerer Inaktiv status "createdAt": "2025-04-10T08:30:00Z", "updatedAt": "2025-05-28T14:45:00Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": "2025-05-27T16:20:00Z", "isDeleted": false, "roleId": "10", "role": "Professor" }- Mulige feilmeldinger
- 401 - Bruker er ikke autorisert til å utføre handlingen
- 404 - Bruker ikke funnet
- 403 - Bruker er ikke autorisert til å se data fra en annen institusjon
- 500 - Serverfeil
GET Hent brukere med paginering (CRUD)
Dette endepunktet lar deg hente en paginert liste over alle brukere i systemet. Spørreparameteren page spesifiserer hvilken side med resultater som skal hentes, slik at klienter kan navigere gjennom brukerdata én side av gangen. Merk at grensen for antall brukere som vises per side er 10 som standard.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request GET \ --url '{{BASE_URL}}/user-info?page=%7B{pageNumber}%7D' \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
- total - Representerer det totale antall brukere tilgjengelig i systemet.
- page - Indikerer gjeldende sidetall som returneres i svaret.
- limit - Standardgrensen for brukerinformasjon som vises per side er 10.
- pages - Viser totalt antall sider tilgjengelig basert på den definerte grensen.
{ "users": [ { "id": "cmgr2bdcc3048vod4g3sjlvk0", "name": "Institution Admin", "email": "admin@email.com", "status": 1, "createdAt": "2025-07-31T07:17:36.948Z", "updatedAt": "2025-07-31T07:26:11.408Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": "2025-07-31T07:26:11.405Z", "isDeleted": false, "roleId": 11, "role": "Admin" }, { "id": "cmgr2n53f000273silwlg127u", "name": "Emily Walker", "email": "ew@email.com", "status": 1, "createdAt": "2025-07-31T07:26:51.340Z", "updatedAt": "2025-07-31T08:21:56.615Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": null, "isDeleted": false, "roleId": 9, "role": "Student" }, { "id": "cmgr2x6si0000v5513n6cj21f", "name": "John Doe", "email": "jd@email.com", "status": 1, "createdAt": "2025-07-31T07:34:34.914Z", "updatedAt": "2025-07-31T07:35:28.825Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": null, "isDeleted": false, "roleId": 9, "role": "Student" }, { "id": "cmgr3g01k0000of4dd3am5r1k", "name": "Simon James", "email": "sj@email.com", "status": 1, "createdAt": "2025-07-31T07:49:12.632Z", "updatedAt": "2025-07-31T08:11:41.200Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": null, "isDeleted": false, "roleId": 10, "role": "Professor" } ], "pagination": { "total": 8, "page": 1, "limit": 10, "pages": 1 } }- Mulige feilmeldinger
- 401 - Bruker er ikke autorisert til å utføre handlingen
- 500 - Serverfeil
GET Hent brukere med paginering og egendefinert grense (CRUD)
Denne forespørselen brukes til å hente en paginert liste over brukere hvor både sidenummer og sidestørrelse er spesifisert. Spørreparameteren page spesifiserer gjeldende sidetall som skal hentes, mens parameteren limit definerer det maksimale antallet brukerposter som returneres per side. Dette gir større kontroll over hvilket sett med brukerposter som returneres og hvor mange som vises per side.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request GET \ --url '{{BASE_URL}}/user-info?page=%7B{pageNumber}%7D&limit=%7B{pageLimit}%7D' \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
total - Representerer det totale antall brukere tilgjengelig i systemet.
page - Indikerer gjeldende sidetall som returneres i svaret.
limit - Definerer maksimalt antall brukere som vises per side.
pages - Viser totalt antall sider tilgjengelig basert på den definerte grensen.
{ "users": [ { "id": "cmgr2bdcc3048vod4g3sjlvk0", "name": "Institution Admin", "email": "admin@email.com", "status": 1, "createdAt": "2025-07-31T07:17:36.948Z", "updatedAt": "2025-07-31T07:26:11.408Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": "2025-07-31T07:26:11.405Z", "isDeleted": false, "roleId": 11, "role": "Admin" }, { "id": "cmgr2n53f000273silwlg127u", "name": "Emily Walker", "email": "ew@email.com", "status": 1, "createdAt": "2025-07-31T07:26:51.340Z", "updatedAt": "2025-07-31T08:21:56.615Z", "institutionId": "cmg03kuda0005y6k9g8e4j7bd", "departmentId": "cmg03kudc0006y6k90zv3m0hy", "facultyId": "cmg03kud90004y6k8v0apnlsm", "lastLogin": null, "isDeleted": false, "roleId": 9, "role": "Student" } ], "pagination": { "total": 8, "page": 1, "limit": 2, // grense satt til 2 brukerposter per side "pages": 4 // oppdatert totalt antall sider basert på den definerte grensen } }- Mulige feilmeldinger
- 401 - Bruker er ikke autorisert til å utføre handlingen
- 500 - Serverfeil
PUT Oppdater underviser (CRUD)
Dette API-endepunktet brukes til å oppdatere profilen til en underviser. Det krever en PUT-forespørsel med userId spesifisert som en spørreparameter. Forespørselens body må inkludere underviserens nye fornavn, etternavn og en oppdatert liste over emner de skal tildeles. Alle felt er obligatoriske for å sikre at underviserens informasjon blir nøyaktig oppdatert.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request PUT \ --url '{{BASE_URL}}/user-info?userId=%7B{userId}%7D' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "firstName": "Jane", // Nytt fornavn "lastName": "Doe", // Nytt etternavn "email": "jd@email.com" // Ny e-post "status": 1, // Bruk 1 for Aktiv status og 0 for Inaktiv status "userSubjects": [ "subject105d8" // Emnets unike identifikator ] }'Eksempel på svar (Response)
{ "message": "User updated successfully!" }- Mulige feilmeldinger
- 401 - Ingen autorisasjon til å utføre handlingen
- 402 - Valideringsfeil: Fornavnet må bestå av kun bokstaver og være minst tre tegn langt, mens etternavnet må inneholde kun bokstaver og være minst tre tegn langt
- 403 - Ikke autorisert til å redigere bruker fra en annen institusjon
- 404 - Bruker ikke funnet
- 500 - Serverfeil, e-post allerede registrert
PUT Oppdater student (CRUD)
Dette API-kallet brukes for å oppdatere profilen til en student. userId må oppgis som en spørreparameter for å identifisere den spesifikke studenten. I forespørselens body må du inkludere studentens nye fornavn, etternavn, e-post og status. Alle felt er påkrevd for å sikre at studentens data blir riktig oppdatert i systemet.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request PUT \ --url '{{BASE_URL}}/user-info?userId=%7B{userId}%7D' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "firstName": "Jane", // Nytt fornavn "lastName": "Smith", // Nytt etternavn "status": 1, // Bruk 1 for Aktiv status og 0 for Inaktiv status "email": "jane.smith@eksempel.no" // Ny e-post }'Eksempel på svar (Response)
{ "message": "User updated successfully!" }- Mulige feilmeldinger
- 401 - Ikke autorisert til å utføre handlingen
- 402 - Valideringsfeil: Fornavnet må bestå av kun bokstaver og være minst tre tegn langt, mens etternavnet må inneholde kun bokstaver og være minst tre tegn langt.
- 403 - Ikke autorisert til å redigere bruker fra en annen institusjon
- 404 - Bruker ikke funnet
- 500 - Serverfeil, e-post er allerede registrert
DELETE Slett bruker (CRUD)
Dette endepunktet brukes til å slette en bruker fra systemet. Det forventes at en bruker-ID oppgis i spørreparameterne for å identifisere hvilken bruker som skal fjernes.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request DELETE \ --url {{BASE_URL}}/user?userId=%7B{userId}%7D \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
{ "message": "User deleted successfully" }- Mulige feilmeldinger
- 401 - Ikke autorisert til å utføre handlingen
- 403 - Ikke autorisert til å slette bruker fra en annen institusjon
- 404 - Bruker ikke funnet
- 500 - Serverfeil
GET Hent emnedetaljer med emnekode (CRUD)
Dette API-kallet brukes for å hente detaljert informasjon om et spesifikt emne ved å oppgi emnets unike identifikasjonskode. En GET-forespørsel sendes til endepunktet /courses-info, med courseCode inkludert som en påkrevd spørreparameter (query parameter).
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request GET \ --url '{{BASE_URL}}/courses-info?courseCode=%7B{emnekode}%7D' \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
{ "course": { "id": "cmgr4ef8f0000q307p110s9tn", "title": "Economics", "description": "Introduction of common economic principles.", "departmentId": "cmgr2bdc80006vod823yotl2j", "year": 1, "code": "EC2025", "createdBy": "cmgr2bdcc0302ved3g3sjzvl0", "status": true, "isDeleted": false, "type": 1, // indikerer emnetype, enten (1) Obligatorisk eller (2) Valgfritt "level": "bachelor", "generation": "g2526", "platform": "IO", "createdAt": "2025-01-15T09:00:00.000Z", "updatedAt": "2025-06-10T15:30:00.000Z" }, "message": "Course details retrieved successfully" }- Mulige feilmeldinger
- 404 - Course not found (Emnet ble ikke funnet)
- 500 - Serverfeil
GET Hent emnedetaljer med paginering og grense (CRUD)
Denne forespørselen henter en paginert liste over emneinformasjon fra /courses-info-endepunktet. Den bruker to spørreparametere: page for å spesifisere sidetallet for resultatene, og limit for å definere hvor mange elementer som skal returneres per side.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request GET \ --url '{{BASE_URL}}/courses-info?page=%7B{pageNumber}%7D&limit=%7B{pageLimit}%7D' \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
- page – Gjeldende sidetall returnert i svaret. Dette tilsvarer page-verdien som ble oppgitt i forespørselen, og forteller deg hvilken del av dataene du ser på.
- pages – Totalt antall tilgjengelige sider basert på datasettet og grensen (limit).
- total – Totalt antall poster/elementer tilgjengelig på tvers av alle sider.
- limit – Antall poster returnert per side, som spesifisert i forespørselen.
{ "courses": [ { "id": "cmgr4ef8f0000q307p110s9tn", "title": "Economics", "description": "Introduction to common economic principles.", "departmentId": "cmgr2bdc80006vod823yotl2j", "year": 1, "code": "EC2025", "createdBy": "cmgr2bdcc0302ved3g3sjzvl0", "status": true, "isDeleted": false, "type": 1, // indikerer emnetype, enten (1) Obligatorisk eller (2) Valgfritt "level": "bachelor", "generation": "g2425", "platform": "IO", "createdAt": "2025-07-15T09:00:00.000Z", "updatedAt": "2025-07-15T09:00:00.000Z" }, { "id": "cmgr4ef8f2222e214p210s9gm", "title": "Modern History", "description": "A survey of world events from 1900 to present.", "departmentId": "cmgk5x8q10009xwe91bl2n34s", "year": 2, "code": "HS2025", "createdBy": "cmgr7tfdd0405vek7u5kpzwn9", "status": true, "isDeleted": false, "type": 2, // indikerer emnetype, enten (1) Obligatorisk eller (2) Valgfritt "level": "bachelor", "generation": "g2425", "platform": "IO", "createdAt": "2025-07-18T11:30:00.000Z", "updatedAt": "2025-07-18T11:30:00.000Z" } ], "pagination": { "page": 1, "pages": 2, "total": 3, "limit": 2 }, "message": "Courses retrieved successfully" }- Mulige feilmeldinger
- 500 - Serverfeil
GET Institusjonsfakulteter og avdelinger med relasjoner (CRUD)
Dette endepunktet brukes til å hente informasjon om en institusjon, inkludert dens fakulteter, avdelinger og hvordan disse er relatert til hverandre.
Bearer-tokenet skal settes inn i autoriseringsheaderen (authorization header).
Eksempel på forespørsel (Request)
curl --request GET \ --url {{BASE_URL}}/institution-info \ --header 'Authorization: Bearer <token>'Eksempel på svar (Response)
{ "institution": { "id": "cmgr2bdkuj0e01vod8salmeq4l", "name": "Eksempeluniversitet", "description": "Et ledende teknologifokusert universitet", "ltiSecret": null, "createdAt": "2024-03-12T08:15:45.123Z", "updatedAt": "2025-07-20T10:30:00.456Z", "clientId": "a1b2c3d4-e5f6-7890-abcd-1234567890ef", // eksempel på clientId, "isTesting": 0, "Faculty": [ { "id": "cmgq4kze20003vpd6n7yxj3ta", "name": "Fakultet for ingeniørvitenskap", "description": "Ingeniørvitenskap og anvendt vitenskap", "institutionId": "cmgr2bdkuj0e01vod8salmeq4l", "createdAt": "2024-04-01T09:00:00.000Z", "updatedAt": "2024-12-15T16:45:22.789Z", "isDeleted": false, "Department": [ { "id": "cmgr2bdc80006vod823yotl2j", "name": "Intro til informatikk", "description": "Introduksjon til informatikk", "level": 1, "year": 1, "facultyId": "cmgq4kze20003vpd6n7yxj3ta", "createdAt": "2024-04-01T09:15:00.000Z", "updatedAt": "2024-04-01T09:15:00.000Z", "isDeleted": false }, { "id": "cmgk4bdc80006vod9x3rwt7ly", "name": "Intro til cybersikkerhet", "description": "Introduksjon til cybersikkerhet", "level": 1, "year": 1, "facultyId": "cmgq4kze20003vpd6n7yxj3ta", "createdAt": "2024-04-01T09:20:00.000Z", "updatedAt": "2024-04-01T09:20:00.000Z", "isDeleted": false } ] } ] } }- Mulige feilmeldinger
- 500 - Serverfeil
Webhooks
Initialisering av Webhook-bruk
Klienter som integrerer med systemet må oppgi et webhook-endepunkt, en URL der de vil motta varslinger om viktige hendelser (f.eks. når et dokument er ferdig prosessert).
Når en hendelse inntreffer (f.eks. at et dokument er ferdig prosessert), sender systemet en POST-forespørsel til klientens oppgitte webhook-URL. Forespørselens body er URL-kodet (application/x-www-form-urlencoded) og inneholder to parametere: client_id og originality_update.
- client_id - client_id brukes til å identifisere klienten som mottar forespørselen.
- originality_update - Inneholder en JWT (JSON Web Token) som sikkert koder oppdateringsdataene relatert til dokumentet. Denne tilnærmingen sikrer at sensitiv informasjon overføres i et kompakt, verifiserbart og manipulasjonssikkert format. JWT-en er signert med RS256-algoritmen, som benytter asymmetrisk kryptering for økt sikkerhet. For å dekode og verifisere ektheten til originality_update-tokenet, må klienten bruke en offentlig nøkkel (public key) levert av plattformen. Inspera Originality vil gi klienter dokumentasjon på hvordan de kan innhente denne nøkkelen.
Webhook-varslinger
Når originality_token har blitt verifisert, vil en av de følgende nyttelastene (payloads) bli sendt som svar.
Webhook Hendelse for dokumentopplasting
Etter at et dokument er lastet opp, sender webhooken et varsel som indikerer at dokumentet fremdeles står i kø for prosessering. Dette svaret bekrefter at opplastingen var vellykket, men at dokumentet ennå ikke er ferdig behandlet. Meldingen inkluderer identifikatorer for sporing og et tidsstempel for referanse.
{ "message": "Document is still in the queue", "status": 0, "institutionId": "inst-45678", "documentId": "doc-12345", "timestamp": "2025-05-28T12:34:56Z" }Webhook Hendelse for start av dokumentprosessering
Når dokumentet går inn i prosesseringsfasen, sender webhooken et varsel som indikerer at dokumentet nå blir behandlet. Dette markerer starten på dokumentets prosesseringsstadium og bekrefter at systemet har begynt å jobbe med det.
{ "message": "Document is processing", "status": -1, "institutionId": "inst-45678", "documentId": "doc-12345", "timestamp": "2025-05-28T12:34:56Z" }Webhook Hendelse for fullført dokumentprosessering
Når et dokument er ferdig gjennomgått i prosesseringspipelinen, sender webhooken et endelig varsel som indikerer at analysen er fullført og resultatene er tilgjengelige. Dette varselet bekrefter at dokumentet er ferdig behandlet og er klart for visning eller videre tiltak. Det inkluderer beregninger for likhet, originalitetsscore og flere integritetskontroller for å hjelpe med vurderingen av dokumentets innhold.
{ "message": "Document is processed", "status": 1, "similarity": "78.4%", "translation_similarity": "65.2%", "ai_index": "42.7%", "institutionId": "inst-45678", "documentId": "doc-12345", "timestamp": "2025-05-28T12:45:00Z", "originality": "High Risk", "characterReplacement": 3, "hiddenText": 0, "imageAsText": 2 }Webhook Dokumentendring
Hvis en lærer eller evaluator endrer rapporten etter at den er ferdig prosessert, sender webhooken et varsel for å indikere at dokumentet nå inneholder oppdaterte verdier. Denne hendelsen signaliserer at det er gjort endringer i den opprinnelige analysen, og at den gjeldende rapporten kan avvike fra de opprinnelige resultatene.
{ "message": "Document had some changes", "status": 3, "similarity": "74.9%", "translation_similarity": "62.1%", "ai_index": "38.5%", "institutionId": "inst-45678", "documentId": "doc-12345", "timestamp": "2025-05-28T13:10:00Z", "originality": "Medium", "characterReplacement": 1, "hiddenText": 0, "imageAsText": 1 }Webhook Feil ved dokumentprosessering
Dersom det oppstår en feil under prosesseringen, fungerer webhooken som en varslingsmekanisme som gir beskjed om at det oppstod en feil under håndteringen av dokumentet. Denne meldingen indikerer at dokumentet ikke kunne ferdigbehandles og kan kreve manuell gjennomgang eller teknisk støtte.
{ "message": "Something went wrong, please report this", "status": 2, "institutionId": "inst-45678", "documentId": "doc-12345", "timestamp": "2025-05-28T13:25:00Z" }