API

API

pdok_admin No Comment
Rutiner og fremgangsmåter

Med tilgang til kundeportalen følger også tilgang til APIet.
Relevante endpoints er:

  • /api/v3/login
  • /api/v3/get_projects
  • /api/v3/get_project
  • /api/v3/get_work

HTTP metoden er POST og APIet gir informasjon fra seg i JSON-format.
Bruk gjerne en tjeneste som reqbin.com eller postman.com for å teste dette ut.

Fremgangen er slik:

    1. Hent en token ved å gjøre en POST til /api/v3/login; brukernavn og tilgangskode oversendes som username og password (x-www-form-urlencoded): username=brukernavn@domene.no&password=tilgangskoden.
      APIet gir JSON tilbake; det blir enten noe slikt (som ikke er ok):
      {
      "version": "3.0",
      "datetime": "2021-11-18T23:40:00+01:00",
      "url": "https://domene/api/v3/login",
      "status": 401,
      "message": "Not OK",
      "data": []
      }

      eller noe slikt (som er ok):
      {
      "version": "3.0",
      "datetime": "2021-11-18T23:43:29+01:00",
      "url": "https://domene/api/v3/login",
      "status": 200,
      "message": "OK",
      "data": {
      "token": "626e10fb4057155eda65a45ad9d5a5d6bf391387"
      }
      }

      Som du ser inneholder data-elementet en token som brukes i øvrige anrop.
    2. For å hente prosjekt-listen brukeren har tilgang til, gjør en POST til /api/v3/get_projects med token=… som POST-verdien.
      Hvis token er gyldig får du noe som:
      {
      "version": "3.0",
      "datetime": "2021-11-18T21:56:37+01:00",
      "url": "https://domene/api/v3/get_projects",
      "status": 200,
      "message": "OK",
      "data": {
      "projects": ["1017", "3157", "3158", "4507", "52238", "64000", "980"]
      }
      }
    3. Du kan så spørre om innehold i et prosjekt med en POST til f.eks.: /api/v3/get_project/52238, igjen met token som POST-verdien. Svaret du får tilbake kan se slik ut:{
      "version": "3.0",
      "datetime": "2021-11-18T22:50:43+01:00",
      "url": "https://domene/api/v3/get_project/64000",
      "status": 200,
      "message": "OK",
      "data": {
      "project": {
      "number": "64000",
      "description": "SUS 2023 Bygg 81",
      "contact": "drift@lilleland.no"
      },
      "work": [{
      "pyrodok_version": "2021.10K",
      "pyrodok_type": "sealing",
      "pyrodok_id": "4H.3KAR0C",
      "project": "64000",
      "qr_code": "0zjd3",
      "reference": null,
      "post": "25.03.0251.7",
      "building": "81",
      "from_room": ["81.06AL271"],
      "from_floor": "6",
      "to_room": ["5"],
      "to_floor": "5",
      "axis_1": null,
      "axis_2": null,
      "position": "Gulv",
      "height_from_floor": {
      "value": 0,
      "unit": "m"
      },
      "wall_type": "Betong 1 side",
      "fire_class": "EI60",
      "amount": "1",
      "hole": "980 x 480",
      "tubes": ["2x \u00f8400"],
      "discipline": "Ventilasjon",
      "date": "2021-09-30",
      "invoiced": "2021-09-30",
      "pyrodok_url": {
      "json": "https://domene/api/v3/get_work/64000/0zjd3?format=json",
      "html": "https://domene/api/v3/get_work/64000/0zjd3?format=html",
      "pdf": "https://domene/api/v3/get_work/64000/0zjd3?format=pdf"
      },
      "drawing": {
      "url": "https://domene/api/v3/get_drawing/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/64000_6",
      "url_with_pin": "https://domene/api/v3/get_drawing/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/64000_6?x=38.17043&y=78.36575"
      },
      "materials": [{
      "name": "EX Gipsm\u00f8rtel",
      "documentation": [{
      "type": "doc",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/030bff8e981b983033dc5edbbe7a6391"
      }, {
      "type": "eta",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/f351d4a34d1cfb998dd940088c3dc9ef"
      }, {
      "type": "tds",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/bf7bef4ced46d8ca4eb264faa2f11332"
      }, {
      "type": "dcl",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/d1b392626436b4a67670c3b006252c02"
      }, {
      "type": "use",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/c957bd600d449e6385b0dc9af9bf296c"
      }, {
      "type": "mom",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/3d04900da713f067591b3f8477d508db"
      }, {
      "type": "hse",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/925ef4d29d985810fa1a883ecf0c3461"
      }]
      }, {
      "name": "FR Brannplate",
      "documentation": [{
      "type": "eta",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/77ad9fd9e0be2714761405a77cda7503"
      }, {
      "type": "mom",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/d154e14e2d2bb9cdcab5c8158115c593"
      }, {
      "type": "use",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/a5f9b355e89afafedf1f4360eff97806"
      }, {
      "type": "hse",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/0f4df5ac20ad475ae81cf9c6a512a552"
      }, {
      "type": "tds",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/1a86620f19911b82832448a988cf6285"
      }, {
      "type": "dcl",
      "url": "https://domene/api/v3/get_documentation/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/63df5f4ef395f9ed883303423c1bd9d9"
      }]
      }],
      "articles": [],
      "pictures": ["https://domene/api/v3/get_image/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/1633002307046", "https://domene/api/v3/get_image/a9c55c1caf9d39eb63ba4c5de8c4e7ab18e16eb3/1633002286873"]
      }, {
      "pyrodok_version": "2021.10K",
      "pyrodok_type": "sealing",
      "pyrodok_id": "4H.3KAQOA",
      "project": "64000",
      "qr_code": "0zjd2",
      "reference": null,
      "post": "25.03.0251.7",
      "building": "81",
      "from_room": ["81.06AG252"],
      "from_floor": "6",
      "to_room": ["5"],
      "to_floor": "5",
      "axis_1": null,
      "axis_2": null,
      "position": "Gulv",
      "height_from_floor": {
      "value": 0,
      "unit": "m"
      },
      "wall_type": "Betong 1 side",
      "fire_class": "EI60",
      "amount": "1",
      "hole": "1300 x 650",
      "tubes": ["2x \u00f8500"],
      "discipline": "Ventilasjon",
      "date": "2021-09-30",
      "invoiced": "2021-09-30",
      "pyrodok_url": {
      "json": "https://domene/api/v3/get_work/64000/0zjd2?format=json",
      "html": "https://domene/api/v3/get_work/64000/0zjd2?format=html",
      "pdf": "https://domene/api/v3/get_work/64000/0zjd2?format=pdf"
      },
      "drawing": {
      "url": "https://domene/api/v3/get_drawing/056053c9b44b4d51e394a62f106b73c20d780e7f/64000_6",
      "url_with_pin": "https://domene/api/v3/get_drawing/056053c9b44b4d51e394a62f106b73c20d780e7f/64000_6?x=27.62001&y=74.57536"
      },
      "materials": [{
      "name": "EX Gipsm\u00f8rtel",
      "documentation": [{
      "type": "doc",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/030bff8e981b983033dc5edbbe7a6391"
      }, {
      "type": "eta",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/f351d4a34d1cfb998dd940088c3dc9ef"
      }, {
      "type": "tds",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/bf7bef4ced46d8ca4eb264faa2f11332"
      }, {
      "type": "dcl",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/d1b392626436b4a67670c3b006252c02"
      }, {
      "type": "use",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/c957bd600d449e6385b0dc9af9bf296c"
      }, {
      "type": "mom",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/3d04900da713f067591b3f8477d508db"
      }, {
      "type": "hse",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/925ef4d29d985810fa1a883ecf0c3461"
      }]
      }, {
      "name": "FR Brannplate",
      "documentation": [{
      "type": "eta",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/77ad9fd9e0be2714761405a77cda7503"
      }, {
      "type": "mom",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/d154e14e2d2bb9cdcab5c8158115c593"
      }, {
      "type": "use",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/a5f9b355e89afafedf1f4360eff97806"
      }, {
      "type": "hse",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/0f4df5ac20ad475ae81cf9c6a512a552"
      }, {
      "type": "tds",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/1a86620f19911b82832448a988cf6285"
      }, {
      "type": "dcl",
      "url": "https://domene/api/v3/get_documentation/056053c9b44b4d51e394a62f106b73c20d780e7f/63df5f4ef395f9ed883303423c1bd9d9"
      }]
      }],
      "articles": [],
      "pictures": ["https://domene/api/v3/get_image/056053c9b44b4d51e394a62f106b73c20d780e7f/1633001876370", "https://domene/api/v3/get_image/056053c9b44b4d51e394a62f106b73c20d780e7f/1633001863454"]
      }]
      }
      }

      Du får i hver fremkomst i listen work noen lenker, bl.a. til forskjellige format (pdf, json, html), i elementet pyrodok_url.
      Andre relevante lenker finner du i følgende elementer (disse lenker er vanlige GETs som ikke krever authentisering):

      1. drawing
      2. materials -> documentation
      3. articles -> documentation
      4. pictures

      Bildefilen https://domene.no/api/v3/get_image/056053c9b44b4d51e394a62f106b73c20d780e7f/1633001863454 f.eks. er det bare å hente.

You must be logged in to post a comment