Inspera Originality API-dokumentation

  • Uppdaterad

Alla API-anrop i detta dokument använder {{BASE_URL}} som en platshållare för den relevanta bas-URL:en, vilken bör ersättas beroende på om du arbetar i utvecklings- eller produktionsmiljön.

Testmiljö

Använd denna miljö för testnings- och utvecklingsändamål. Notera att den kan ha andra anropsbegränsningar (rate limits) och datamängder jämfört med produktion.

Bas-URL - https://ja0ot1lhh6.execute-api.eu-central-1.amazonaws.com/test

Produktionsmiljö

Produktionsmiljön är den skarpa miljön för faktiska användarinteraktioner. Säkerställ att rätt URL används för dina produktionsapplikationer.

Bas-URL - https://6x6hep4ey9.execute-api.eu-central-1.amazonaws.com/production

API-anrop 

Slutpunkter för uppladdning

  1. POST Auktorisering

    Denna POST-begäran används för att erhålla en autentiseringstoken. Tokenen måste inkluderas i headern på efterföljande anrop för att auktorisera åtkomst till andra API-slutpunkter.

    clientId tillhandahålls av Inspera Originality.

    1. Exempel på begäran (Request)

      curl --request POST \
      --url {{BASE_URL}}/token \
      --header 'Content-Type: application/json' \
      --data '{
      "clientId": "a1b2c3d4-e5f6-7890-abcd-1234567890ef", // exempel på clientId
      "institutionId": "inst_9876543210" // exempel på institutionId
      }'
    2. Exempel på svar (Response)

      {
      "token": "eyJhbGciOiJIUzI1NiIsIIkpXVCJ9.eyJjbGllbnRJZCI6IkZ....", // exempel på token 
      "expirationTime": 1759208000000 // upphör 24 timmar efter utfärdandet
      }
    3. Möjliga fel
      • 401 unauthorized - clientId är ogiltig
      • 404 bad request - Obligatoriska fält var ogiltiga
  2. POST Dokumentuppladdning

    För att initiera en likhetskontroll av ett dokument, skicka en POST-begäran till slutpunkten /create/submission, vilken fungerar som ingångsport för systemet för att bearbeta och analysera det inskickade dokumentet. API-svaret innehåller ett message-fält som indikerar om uppladdningen lyckades eller om fel uppstod under processen. Det innehåller även ett documentId, vilket fungerar som en unik identifierare för det uppladdade dokumentet och kan användas för framtida referenser eller åtgärder. Dessutom ger svaret en presignedS3Url. Denna URL är den plats där dokumentfilen faktiskt måste laddas upp för att systemet ska kunna bearbeta den.

    Obligatoriska och valfria parametrar för begäran

    Obligatoriska parametrar

    • documentTitle: Titeln på dokumentet som skickas in.
    • author: Namnet på personen som har skrivit dokumentet.
    • email: E-postadressen till studenten som laddar upp dokumentet.
    • docType: Anger dokumenttyp med stöd för MIME-typer (obligatoriskt, med stöd för format som .pdf, .docx, .txt, etc.).

    Valfria parametrar

    • translatedLanguage: Används för språköverskridande likhetskontroller. Accepterar en språkkod (valfritt). Språk som stöds inkluderar: engelska (en), albanska (sq), tyska (de), italienska (it), litauiska (lt), spanska (es), portugisiska (pt), tjeckiska (cs), turkiska (tr), slovakiska (sk), franska (fr), makedonska (mk), polska (pl), norska (no), lettiska (lv), grekiska (el), nederländska (nl), ryska (ru), bulgariska (bg), ungerska (hu), rumänska (ro), serbiska (sr), svenska (sv), finska (fi), kroatiska (hr), danska (da), bosniska (bs), slovenska (sl), estniska (et).
    • assignmentId: Identifierar den uppgift som dokumentet är kopplat till (valfritt).
    • institutionName: Namnet på institutionen där dokumentet skickades ifrån (valfritt).
    • enableAIDetection: Aktiverar detektering av AI-författarskap om satt till true (valfritt, avaktiverat som standard).
    • enableReferenceDetection: Slår på/av referensdetektering (valfritt, aktiverat som standard).
    • reSubmissions: Anger hur många gånger förnyad inlämning är tillåten (valfritt, standard är 1).
    • subjectId: ID för ämnet som dokumentet relaterar till (valfritt).
    • maxLimit: Anger en maximal gräns för antal ord i dokumentet (valfritt, ingen gräns som standard).
    • archive: Indikerar om inlämningen ska arkiveras för detektering av otillåtet samarbete (collusion) (valfritt, standard är false).
    • enableContextSimilarity: Aktiverar analys av kontextuell likhet.
    • sentenceThresholds: Objektparameter som möjliggör definition av procentnivåer för meningsklassificering. Kräver värden för contextualSimilaritiesThreshold, alteredTextSimilarityThreshold, och exactMatchSimilarityThreshold angivna som siffror.
    • sources: Objektparameter som gör det möjligt att definiera källor som ska inkluderas eller exkluderas från originalitetskontrollen. Kräver includeSources och excludeSources som arrayer med URL:er angivna som strängar.
    • sourcesThreshold: Anges som en siffra; definierar den procentsats under vilken matchande källor inte beaktas i originalitetsrapporten. T.ex. om detta sätts till 5 betyder det att källor under 5 % ignoreras.

     

    1. Exempel på begäran (Request)

      curl --request POST \
      --url {{BASE_URL}}/create/submission \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '{
       "documentTitle": "<string>", --> Obligatoriskt
       "author": "<string>", ---------> Obligatoriskt
       "email": "<string>", ----------> Obligatoriskt
       "docType": "<string>" ---------> Obligatoriskt
       "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": [ -> exkludera källor från kontrollen 
          "https://exampleurl1.com",
          "https://exampleurl2.com"
          ],
        "includeSources": [ -> inkludera källor i kontrollen
          "https://exampleurl3.com",
          "https://exampleurl4.com"
          ]
        },
      "sourcesThreshold": 5 -> procentnivå under vilken källor inte beaktas. 
      }'
    2. Exempel på svar (Response)

      {
       "documentId": "cmdlxqztb10006xa582hjtkeu",
       "message": "Ditt dokument har laddats upp framgångsrikt",
       "presignedS3Url": "<string>" // URL:en där dokumentet måste laddas upp.
      } 
    3. Möjliga fel
      • 401 unauthorized - Token har löpt ut
      • 403 forbidden
        • Maximalt antal inlämningar har uppnåtts
        • Dokumenttiteln har färre än 5 tecken eller fler än 190 tecken
        • Antalet ord i dokumentet överstiger det tillåtna maxvärdet
        • Dokumentets struktur är ogiltig
        • Maximalt antal inlämningar har uppnåtts
        • Dokumentets struktur är ogiltig
      • 400 bad request - De obligatoriska fälten är ogiltiga
  3. GET Kontroll av dokumentstatus - Polling 

    För att kontrollera statusen för ett dokument, skicka en GET-begäran till den slutpunkt som anges i exemplet nedan. Använd documentId (som erhölls i föregående svar) som en sökvägsparameter. Detta är en manuell process som returnerar aktuell status för det specifika dokumentet.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url {{BASE_URL}}/document/%7B{documentId}%7D/checkStatus \
      --header 'Authorization: Bearer <token>'
    2. Exempel 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 indikerar att dokumentet fortfarande bearbetas
        • 1 indikerar att dokumentet har bearbetats framgångsrikt
        • 0 indikerar att dokumentet ligger i kö för bearbetning
        • 2 indikerar att ett fel har uppstått.
      • "similarity" anger nivån av likhet på originalspråket
      • "translation_similarity" anger nivån av likhet via översättning
      • "ai_index" anger nivån av innehåll som potentiellt genererats av AI
      • "originality" anger klassificering: antingen High, Medium eller Low Risk.
      • "characterReplacement" anger antalet teckenersättningar
      • "hiddenText" anger antalet instanser av dold text
      • "imageAsText" anger antalet bilder som döljer vanlig text
    3. Möjliga fel
      • 400 - Bad Request (Felaktig begäran)
      • 401 - Token Has Expired (Token har löpt ut)
      • 403 - Forbidden (Förbjudet)
      • 404 - Submission Not Found (Inlämningen hittades inte)
  4. GET Hämta rapport-URL

    Denna begäran initierar Originality Report API genom att tillhandahålla de obligatoriska sökvägsparametrarna documentId och mode. Som svar returnerar API:et en sessionsbaserad URL för att komma åt rapporten. documentId är en unik identifierare som genereras av slutpunkten /create/submission, och används för att referera till det specifika dokument som rapporten begärs för. Parametern mode definierar åtkomstnivån för rapporten; använd "view" för att ge skrivskyddad åtkomst, eller "edit" för att möjliggöra redigering i rapportgränssnittet.

    Viktigt

    När denna slutpunkt anropas returneras en tillfällig sessionsbaserad URL snarare än den faktiska rapport-URL:en. Denna sessions-URL är en engångslänk med begränsad giltighetstid som triggar en verifieringsprocess i backend.

    Sessions-ID:n är utformade för att löpa ut antingen:

    • Efter att tidsfönstret på 2 minuter har passerat.
    • Omedelbart efter att den tillhörande originalitetsrapporten har öppnats.

    Denna inbyggda utgångsmekanism säkerställer att sessions-ID:t inte kan återanvändas eller delas. Följaktligen kan originalitetsrapporter inte nås via delade URL:er, eftersom utgångna sessions-ID:n gör sådana länkar ogiltiga. Denna tidskänsliga åtkomstmodell stärker säkerheten genom att förhindra obehörig vidaredistribution av rapportlänkar.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url {{BASE_URL}}/document/{documentId}/mode/{mode} \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      {
        "url": "<string>"
      }
    3. Möjliga fel
      • 400 - Bad request (Felaktig begäran)
      • 401 - Token has expired (Token har löpt ut)
      • 403 - Forbidden (Förbjudet)
      • 404 - Submission not found (Inlämningen hittades inte)

CRUD-slutpunkter

  1. POST Auktorisering (CRUD)

    För att interagera med CRUD-API:et måste klienter först erhålla en åtkomsttoken. Detta görs genom att skicka en POST-begäran till slutpunkten /login med användarens inloggningsuppgifter. API:et kommer att validera den angivna e-postadressen och lösenordet, och om det lyckas, svara med en autentiseringstoken som måste inkluderas i headern på alla efterföljande anrop. Svaret innehåller ytterligare information, men du behöver endast token för att fortsätta med efterföljande anrop.

    1. Exempel på begäran (Request)

      curl --request POST \
      --url {{BASE_URL}}/login \
      --header 'Content-Type: application/json' \
      --data '{
      "email": "example@email.com",
      "password": "examplepassword"
      }'
    2. Exempel på svar (Response)

      {
       "token": "eyJhbGciOiJIUzI1NiIsIIkpXVCJ9.eyJjbGllbnRJZCI6IkZ..", // exempel på token 
      }
    3. Möjliga fel
      • 404 - Användaren hittades inte
      • 409 - Ogiltigt e-postformat
      • 422 - Ogiltiga inloggningsuppgifter
      • 500 - Serverfel
  2. POST Skapa användare (CRUD)

    Detta API-anrop används för att skapa en ny användare på plattformen. Det gör det möjligt att ange generella uppgifter för den nya användaren samt tilldela befintliga ämnen till användaren via parametern "courses".

    Bearer-token ska infogas i auktoriseringsheadern (authorization header).

    1. Exempel på begäran (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 vara antingen "student" eller "educator"
      "status": 1, // Använd 1 för Aktiv och 0 for Inaktiv 
      "courses": [
       "subjectcode", // Ämnets unika identifierare, t.ex. CS101
       "subjectcode"
        ]
      }'
    2. Exempel 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
      }
    3. Möjliga fel
      • 401 - Inte auktoriserad att utföra handlingen
      • 402 - Valideringsfel: Förnamnet får endast bestå av bokstäver och måste vara minst tre tecken långt, medan efternamnet får endast innehålla bokstäver och vara minst tre tecken långt.
      • 409 - Valideringsfel: Ogiltigt e-postformat, eller så existerar e-postadressen redan.
      • 500 - Serverfel
  3. GET Hämta användare via e-post (CRUD)

    Denna slutpunkt gör det möjligt att hämta användarinformation baserat på deras e-postadress. Genom att skicka en GET-begäran till /user-info-slutpunkten med användarens e-post som en frågeparameter (query parameter), kan du hämta detaljerad information om den specifika användaren.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url '{{BASE_URL}}/user-info?email=%7B{userEmail}%7D' \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      {
        "id": "cmg04yzpa0007y6k8r2dq1nvm",
        "name": "Emily Walker",
        "email": "ew@email.com",
        "status": 1, // 1 indikerar aktiv status, 0 indikerar 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"
      }
      
    3. Möjliga fel
      • 401 - Användaren är inte auktoriserad att utföra handlingen
      • 404 - Användaren hittades inte
      • 403 - Användaren är inte auktoriserad att komma åt data från en annan institution
      • 500 - Serverfel
  4. GET Hämta användare med paginering (CRUD)

    Denna slutpunkt låter dig hämta en paginerad lista över alla användare i systemet. Frågeparametern page anger vilken sida med resultat som ska hämtas, vilket låter klienter navigera genom användarposter en sida i taget. Notera att gränsen för användarinformation som visas per sida är 10 som standard.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url '{{BASE_URL}}/user-info?page=%7B{pageNumber}%7D' \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      • total - Representerar det totala antalet användare som finns i systemet.
      • page - Anger det aktuella sidnumret som returneras i svaret.
      • limit - Standardgränsen för användarinformation som visas per sida är 10.
      • pages - Visar det totala antalet tillgängliga sidor baserat på den definierade gränsen.
      {
      "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
       }
      }
    3. Möjliga fel
      • 401 - Användaren är inte auktoriserad att utföra handlingen
      • 500 - Serverfel
  5. GET Hämta användare med paginering och anpassad gräns (CRUD)

    Denna begäran används för att hämta en paginerad lista över användare där både sidnummer och sidstorlek är angivna. Frågeparametern page anger det aktuella sidnumret som ska hämtas, medan parametern limit definierar det maximala antalet användarposter som returneras per sida. Detta ger större kontroll över vilken uppsättning användarposter som returneras och hur många som visas per sida.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url '{{BASE_URL}}/user-info?page=%7B{pageNumber}%7D&limit=%7B{pageLimit}%7D' \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      • total - Representerar det totala antalet användare som finns i systemet.

      • page - Anger det aktuella sidnumret som returneras i svaret.

      • limit - Definierar det maximala antalet användare som visas per sida.

      • pages - Visar det totala antalet tillgängliga sidor baserat på den definierade gränsen.

      {
      "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, // gräns satt till 2 användarposter per sida
         "pages": 4 // uppdaterat antal totala sidor baserat på den definierade gränsen
       }
      }
    3. Möjliga fel
      • 401 - Användaren är inte auktoriserad att utföra handlingen
      • 500 - Serverfel
  6. PUT Uppdatera lärare (CRUD)

    Denna API-slutpunkt används för att uppdatera en lärares profil. Den kräver en PUT-begäran med userId angivet som en frågeparameter. Begärans body måste inkludera lärarens nya förnamn, efternamn och en uppdaterad lista över ämnen som de ska tilldelas. Alla fält är obligatoriska för att säkerställa att lärarens information uppdateras korrekt.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (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 förnamn
      "lastName": "Doe", // Nytt efternamn 
      "email": "jd@email.com" // Ny e-post
      "status": 1, // Använd 1 för aktiv status och 0 för inaktiv status
      "userSubjects": [
         "subject105d8" // Ämnets unika identifierare
        ]
      }'
    2. Exempel på svar (Response)

      {
        "message": "User updated successfully!"
      }
    3. Möjliga fel
      • 401 - Ingen auktorisering att utföra handlingen
      • 402 - Valideringsfel: Förnamnet får endast bestå av bokstäver och måste vara minst tre tecken långt, medan efternamnet får endast innehålla bokstäver och vara minst tre tecken långt.
      • 403 - Inte auktoriserad att redigera användare från en annan institution
      • 404 - Användaren hittades inte
      • 500 - Serverfel, e-postadressen är redan registrerad
  7. PUT Uppdatera student (CRUD)

    Detta API-anrop används för att uppdatera en students profil. userId måste tillhandahållas som en frågeparameter för att identifiera den specifika studenten. I begärans body måste du inkludera studentens nya förnamn, efternamn, e-post och status. Alla fält krävs för att säkerställa att studentens post uppdateras korrekt i systemet.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (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 förnamn
      "lastName": "Smith", // Nytt efternamn
      "status": 1, // Använd 1 för aktiv status och 0 för inaktiv status
      "email": "jane.smith@example.com" // Ny e-post
      }'
    2. Exempel på svar (Response)

      {
       "message": "User updated successfully!"
      }
    3. Möjliga fel
      • 401 - Inte auktoriserad att utföra handlingen
      • 402 - Valideringsfel: Förnamnet får endast bestå av bokstäver och vara minst tre tecken långt, medan efternamnet får endast innehålla bokstäver och vara minst tre tecken långt.
      • 403 - Inte auktoriserad att redigera användare från en annan institution
      • 404 - Användaren hittades inte
      • 500 - Serverfel, e-postadressen är redan registrerad
  8. DELETE Ta bort användare (CRUD)

    Denna slutpunkt används för att ta bort en användare från systemet. Den förväntar sig att ett användar-ID tillhandahålls i frågeparametrarna för att identifiera vilken användare som ska tas bort.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request DELETE \
      --url {{BASE_URL}}/user?userId=%7B{userId}%7D \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      {
        "message": "User deleted successfully"
      }
    3. Möjliga fel 
      • 401 - Inte auktoriserad att utföra handlingen
      • 403 - Inte auktoriserad att ta bort användare från en annan institution
      • 404 - Användaren hittades inte
      • 500 - Serverfel
  9. GET Hämta kursinformation med kurskod (CRUD)

    Detta API-anrop används för att hämta detaljerad information om en specifik kurs genom att tillhandahålla kursens unika identifieringskod. En GET-begäran görs till slutpunkten /courses-info, med courseCode inkluderad som en obligatorisk frågeparameter.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url '{{BASE_URL}}/courses-info?courseCode=%7B{course Code}%7D' \
      --header 'Authorization: Bearer <token>'
    2. Exempel 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, // indikerar ämnestyp: antingen (1) Obligatorisk eller (2) Valbar
          "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"
      }
    3. Möjliga fel
      • 404 - Kursen hittades inte
      • 500 - Serverfel
  10. GET Hämta kursinformation med paginering och gräns (CRUD)

    Denna begäran hämtar en paginerad lista med kursinformation från slutpunkten /courses-info. Den använder två frågeparametrar: page för att ange sidnumret för resultaten, och limit för att definiera hur många objekt som ska returneras per sida.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url '{{BASE_URL}}/courses-info?page=%7B{pageNumber}%7D&limit=%7B{pageLimit}%7D' \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      • page – Det aktuella sidnumret som returneras i svaret. Detta motsvarar page-värdet i begäran och anger vilken del av datan du ser.
      • pages – Det totala antalet tillgängliga sidor baserat på datamängden och den angivna gränsen (limit).
      • total – Det totala antalet poster/objekt som finns tillgängliga över alla sidor.
      • limit – Antalet poster som returneras per sida, enligt specifikationen i begäran.
      {
      "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, // indikerar ämnestyp: antingen (1) Obligatorisk eller (2) Valbar
         "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, // indikerar ämnestyp: antingen (1) Obligatorisk eller (2) Valbar
         "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"
      }
    3. Möjliga fel
      • 500 - Serverfel (Server Error)
  11. GET Institutionens fakulteter och institutioner med relationer (CRUD)

    Denna slutpunkt används för att hämta information om en utbildningsanstalt, inklusive dess fakulteter, institutioner (departments) och hur dessa är relaterade till varandra.

    Bearer-token bör infogas i auktoriseringsheadern.

    1. Exempel på begäran (Request)

      curl --request GET \
      --url {{BASE_URL}}/institution-info \
      --header 'Authorization: Bearer <token>'
    2. Exempel på svar (Response)

      {
         "institution": {
            "id": "cmgr2bdkuj0e01vod8salmeq4l",
            "name": "Exempeluniversitetet",
            "description": "Ett ledande teknikfokuserat universitet",
            "ltiSecret": null,
            "createdAt": "2024-03-12T08:15:45.123Z",
            "updatedAt": "2025-07-20T10:30:00.456Z",
            "clientId": "a1b2c3d4-e5f6-7890-abcd-1234567890ef", // exempel på clientId,
            "isTesting": 0,
            "Faculty": [
                {
                  "id": "cmgq4kze20003vpd6n7yxj3ta",
                  "name": "Tekniska fakulteten",
                   "description": "Ingenjörsvetenskap och tillämpad vetenskap",
                   "institutionId": "cmgr2bdkuj0e01vod8salmeq4l",
                   "createdAt": "2024-04-01T09:00:00.000Z",
                   "updatedAt": "2024-12-15T16:45:22.789Z",
                   "isDeleted": false,
            "Department": [
                {
                   "id": "cmgr2bdc80006vod823yotl2j",
                   "name": "Intro till datavetenskap",
                   "description": "Introduktion till datavetenskap",
                   "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 till cybersäkerhet",
                   "description": "Introduktion till cybersäkerhet",
                   "level": 1,
                   "year": 1,
                   "facultyId": "cmgq4kze20003vpd6n7yxj3ta",
                   "createdAt": "2024-04-01T09:20:00.000Z",
                   "updatedAt": "2024-04-01T09:20:00.000Z",
                   "isDeleted": false
                 }
               ]
             }
           ]
         }
      }
    3. Möjliga fel
      • 500 - Serverfel

Webhooks

Initialisering av webhook-användning

Klienter som integrerar med systemet måste tillhandahålla en slutpunkt för webhooks, en URL där de tar emot aviseringar om viktiga händelser (t.ex. när ett dokument har bearbetats).

När en händelse inträffar (t.ex. att ett dokument har bearbetats framgångsrikt), skickar systemet en POST-begäran till klientens angivna webhook-URL. Begärans body är URL-kodad (application/x-www-form-urlencoded) och innehåller två parametrar: client_id och originality_update.

  • client_id – client_id används för att identifiera den klient som tar emot begäran.
  • originality_update – Innehåller en JWT (JSON Web Token) som på ett säkert sätt kodar uppdateringsdata relaterad till dokumentet. Detta tillvägagångssätt säkerställer att känslig information överförs i ett kompakt, verifierbart och manipuleringssäkert format. JWT-token är signerad med RS256-algoritmen, som använder asymmetrisk kryptering för ökad säkerhet. För att avkoda och verifiera äktheten av originality_update-token måste klienten använda en publik nyckel som tillhandahålls av plattformen. Inspera Originality kommer att tillhandahålla dokumentation till klienter om hur man erhåller denna nyckel.

Webhook-aviseringar

När originality_token har verifierats framgångsrikt kommer en av följande nyttolaster (payloads) att skickas som svar.

  1. Webhook Händelse för dokumentuppladdning

    Efter att ett dokument har laddats upp skickar webhooken ett meddelande som indikerar att dokumentet fortfarande befinner sig i bearbetningskön. Detta svar bekräftar att uppladdningen lyckades, men att dokumentet ännu inte har bearbetats klart. Meddelandet innehåller identifierare för spårning och en tidsstämpel som referens.

    {
     "message": "Document is still in the queue",
     "status": 0,
     "institutionId": "inst-45678",
     "documentId": "doc-12345",
     "timestamp": "2025-05-28T12:34:56Z"
    }
  2. Webhook Händelse för start av dokumentbearbetning

    När dokumentet går in i bearbetningsfasen skickar webhooken ett meddelande som indikerar att dokumentet nu bearbetas. Detta markerar starten på dokumentets bearbetningssteg och bekräftar att systemet har börjat arbeta med det.

    {
     "message": "Document is processing",
     "status": -1,
     "institutionId": "inst-45678",
     "documentId": "doc-12345",
     "timestamp": "2025-05-28T12:34:56Z"
    }
  3. Webhook Händelse för slutförd dokumentbearbetning

    När ett dokument har passerat hela bearbetningskedjan skickar webhooken ett slutgiltigt meddelande som indikerar att all analys är klar och att resultaten är tillgängliga. Detta meddelande bekräftar att dokumentet har bearbetats fullt ut och är redo för granskning eller vidare åtgärder. Det innehåller likhetsmått, originalitetspoäng och flera integritetskontroller för att hjälpa till att bedöma dokumentets innehåll.

    {
     "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
    }
  4. Webhook Dokumentändring

    Om en lärare eller bedömare ändrar rapporten efter att den har bearbetats, skickar webhooken ett meddelande för att indikera att dokumentet nu innehåller uppdaterade värden. Denna händelse signalerar att ändringar har gjorts i den ursprungliga analysen och att den aktuella rapporten kan skilja sig från de första bearbetade resultaten.

    {
     "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
    }
  5. Webhook Fel vid dokumentbearbetning

    I händelse av ett bearbetningsfel fungerar webhooken som en larmmekanism som meddelar systemet att ett fel uppstod vid hanteringen av dokumentet. Detta meddelande indikerar att dokumentet inte kunde bearbetas fullt ut och kan kräva manuell granskning eller teknisk support.

    {
     "message": "Something went wrong, please report this",
     "status": 2,
     "institutionId": "inst-45678",
     "documentId": "doc-12345",
     "timestamp": "2025-05-28T13:25:00Z"
    }

Var denna artikel till hjälp?

0 av 0 tyckte detta var till hjälp