API dokumentation

NBS Nordics API kan benyttes af udviklere til at hente og redigere information om byggebeskrivelser tilknyttet en brugerkonto.

Indhold i denne artikel:

Kom i gang

NBS Nordics API kan benyttes af udviklere til at hente og redigere information om byggebeskrivelser tilknyttet et projekt. For at bruge API'en kræver det, at man har en brugerkonto. Ved kontakt til API'en skal man desuden bruge sin API-nøgle, som man finder under konto-oplysningerne, når man er logget ind. (Klik på dit brugernavn i øverste højre hjørne -> Redigér din konto -> Vælg fanen API) API-nøglen er unik for hver enkelt bruger.

Base URL: nbsnordic.net/api/v2
NB: som skema bør https altid benyttes

Autorisation

Når der foretages et API kald skal den personlige API nøgle samtidig medsendes, for at autorisere forespørgslen. API nøglen sendes med som en custom header api-key. Eksempel:

$ curl -H "api-key: xxxxxxxxxxxxxxxx" https://nbsnordic.net/api/v2/projects

API'en returner JSON-data ved succes eller statuskode 401 + fejlbesked, hvis API nøglen ikke kunne genkendes.

Eksempel

Hvis du ønsker at hente information om alle bygningsdele ud for et projekt, kan du kalde følgende URL.

https://nbsnordic.net/api/v2/projects/[projectId]/components


HTTP kaldet kunne så se således ud:
$ curl -H "api-key: xxxxxxxxxxxxxxxx" https://nbsnordic.net/api/v2/projects/127/components

Ovenstående vil returnere:

{
  "components": [
    {
      "active": 1,
      "classificationcode": "0",
      "classificationcode_separator": ".",
      "classificationname": "",
      "classificationserial": "001",
      "company_id": 23,
      "contract": {
        "created_at": "2018-05-11 08:02:01",
        "id": 4970,
        "is_contract": 1,
        "is_default": 0,
        "is_subject": 0,
        "name": "Byggepladsentreprise",
        "project_id": 127,
        "updated_at": "2018-05-11 08:02:01"
      },
      "contract_id": 4970,
      "contract_name": "Byggepladsentreprise",
      "created_at": "2017-07-04 14:58:41",
      "deleted_at": null,
      "description": "Beskrivelse tekst",
      "doc_title": "Generisk bygningsdel",
      "document_id": 0,
      "document_names": "Dokument til udgivelse, Arbejdsbeskrivelse for afløb i jord, Test dokument auto oprettet (omdøbt)",
      "extra_fields": [
        {
          "applies_to_all_classificationcodes": 0,
          "content": "Type B",
          "created_at": "2019-06-18 21:58:22",
          "field_id": "isoleringstype",
          "field_name": "Isoleringstype",
          "revit_parameter": "",
          "updated_at": "2019-06-18 21:58:22"
        }
      ],
      "id": 418,
      "lasteditor_id": 38,
      "measure_id": 2,
      "measure_name": "m2",
      "measurement": {
        "calculation_type": "sum",
        "created_at": "-0001-11-30 00:00:00",
        "deleted_at": null,
        "description": "Total areal",
        "id": 2,
        "measurement_id": 1,
        "name": "m2",
        "updated_at": "-0001-11-30 00:00:00"
      },
      "measurement_amount": 0,
      "measurement_amount_manual": null,
      "measurement_updated_at": "2018-10-23 13:12:13",
      "name": "Generisk bygningsdel",
      "project_id": 127,
      "published_document_urls": [
        "https://nbsnordic.net/pubdocs/view/dbd757aaf9",
        "https://nbsnordic.net/pubdocs/view/55041b5121",
        "https://nbsnordic.net/pubdocs/view/2f06da8e0e"
      ],
      "revit_id": "",
      "structure": "Opbygnings beskrivelse",
      "subject": {
        "created_at": "2018-05-11 08:02:01",
        "id": 4956,
        "is_contract": 0,
        "is_default": 0,
        "is_subject": 1,
        "name": "Tag",
        "project_id": 127,
        "updated_at": "2018-05-11 08:02:01"
      },
      "subject_id": 4956,
      "subject_name": "Tag",
      "template_id": 196,
      "template_type": null,
      "tender_title": "Generisk bygningsdel",
      "tenderlist": {
        "created_at": "2019-06-03 00:25:47",
        "id": 1873,
        "number": 1,
        "project_id": 127,
        "reference": "Dør",
        "title": "Den lange dør",
        "updated_at": "2019-06-18 21:59:16"
      },
      "tenderlist_id": 1873,
      "tenderlist_name": "Den lange dør",
      "tenderlist_order": 1,
      "updated_at": "2019-06-18 21:59:16",
      "user_id": 38
    }
  ],
  "meta": {
    "server_timestamp": "2019-06-18 21:59:44"
  },
  "project": {
    "active": 1,
    "archived_at": "-0001-11-30 00:00:00",
    "classification_id": 1,
    "classificationcode_separator": ".",
    "company_id": 23,
    "created_at": "2017-07-04 14:58:17",
    "ends_at": null,
    "id": 127,
    "keynote_columns": "[navn] [linjeskift] [opmålingsregel]",
    "keynote_columns_api": "[navn] [linjeskift] [opmålingsregel]",
    "owner_city": "",
    "owner_countrycode": "",
    "owner_name": "",
    "owner_street": "",
    "owner_streetno": "",
    "owner_type": 0,
    "owner_zip": 0,
    "ownercontact_email": "",
    "ownercontact_name": "",
    "ownercontact_phone": "",
    "payment_type": null,
    "plan": "enterprise",
    "project_city": "",
    "project_countrycode": "",
    "project_description": "",
    "project_enddate": null,
    "project_form": 0,
    "project_id": "",
    "project_matrikelnr": "",
    "project_name": "Jonsvangen ejerlaug",
    "project_phase": 0,
    "project_startdate": null,
    "project_street": "",
    "project_streetno": "",
    "project_type": 0,
    "project_zip": 0,
    "projectstructure": "0",
    "stripe_id": null,
    "stripe_plan": null,
    "stripe_plan_type": "enterprise-quarterly",
    "updated_at": "2019-06-18 21:59:16",
    "use_alternative_quantities_calculation_method": null
  }
}

Endpoints

Herunder er en oversigt over tilgængelige api-kald.

For at isolere informationer til et enkelt element, skrives ID'et blot efter en skråstreg - f.eks. vil /projects/32 returnere information om dette enkelte projekt.

GET:

Version

Endpoint

Beskrivelse

V1

/documents

Returnerer liste over dokumenter fra alle brugerens projekter

V1

/documents/[document_id]

Isoleret information om dokument

V1

/projects

Liste over projekter

V1

/projects/[project_id]

Isoleret information om projekt

V1

/projects/[project_id]/documents

Returnerer liste over dokumenter for projekt

V2

/projects/[project_id]/components

Returnerer bygningsdele for projekt

V2 projects/[project_id]/instances

Det returnerer alle projektets instanser samt deres tilhørende modeller og instance_parameters (mængderne).


Værdien under instances.*.quantity er en summeret mængde, hvis enheden er sum, ellers er værdien 1. Det er sådan, det allerede var implementeret i koden, men det er noget, vi kan ændre, hvis det skaber forvirring.

V2 /export-backup/[project_id]

Kræver tilkøb af pro-funktioner

Laver en zip-fil svarende til hvis du selv manuelt klikket på vores backup-funktion.


POST:

Version

Endpoint

Beskrivelse

V2

/sheet

Tilføje skema med en variabel mængde.

Tilgængelige felter: 'name', 'revit_id', 'project_id', 'json_array'.

Er der allerede et skema i projektet med samme revit_id, overskrives dette.

V2

/quantities

Opdaterer mængder for bygningsdele.

Tilgængelige felter: 'project_id', 'json_array'.

V2

/projects/[project_id]/component

Indsæt en ny bygningsdel i et projekt.

Tilgængelige felter: 'name', 'structure', 'classificationcode',

'discipline_id', 'measure_id', 'active' (1 eller 0), 'description'.

Den oprettede bygningsdel vil blive returneret som JSON inkl. bygningsdel ID.

V2

/projects/[project_id]/component/[extra_field_id]

Kræver tilkøb af pro-funktioner

Værdier sende som raw json i body.


Eksempel:

{  

"components": [  

{  

"id": "[component_id]",  

"value": "Værdi via API 1"  

},  

{  

"id": "[component_id]",  

"value": "Værdi via API 2"  

}  

]  

}  

 

V2 /projects/[project_id]?project_name=[project_ name]

Kræver tilkøb af pro-funktioner

Klon et projekt inkl. dets opsætning

Tilgængelige felter: 'project_ name',