FinBIF Laji API (Finnish Biodiversity Information Facility)

The largest contract the University of Helsinki operates: 177 paths and 239 component schemas over Finnish species, taxonomy, occurrence records, collections, image bank and data requests. Operated by Luomus, the Finnish Museum of Natural History, which is an institute of the University — the FinBIF privacy policy names "University of Helsinki, Finnish Museum of Natural History" (Business ID 0313471-7) as the registrar. It is also the only surface in the estate with a genuinely self-service credential: POST an email address to /api-user and an access token is mailed back, no institutional affiliation required.

Operations 225

GET /forms/{id}/participants Get participants of a form. Only for form admins. #
GET /forms Get a page of forms #
POST /forms Create a new form #
GET /forms/{id} Get a form by id #
PUT /forms/{id} Update an existing form #
DELETE /forms/{id} Delete a form #
POST /forms/transform Get preview of form transformed from json format to schema format #
GET /person/profile Get profile #
POST /person/profile Create profile #
PUT /person/profile Update profile #
GET /person/{id} Find person by user id (this will not include email) #
GET /person Find person by person token #
GET /person/{id}/profile Find profile by person id (this will only return small subset of the full profile) #
PUT /person/friends/{id} Accept friend request #
DELETE /person/friends/{id} Remove a friend request or a friend #
POST /person/friends/{id} Request person to be your friend #
GET /person/exists-by-email/{email} Check if given email has an existing account #
GET /authentication-event Information about the authentication event of a person token #
DELETE /authentication-event Delete authentication session of a person token #
GET /notifications #
PUT /notifications/{id} #
DELETE /notifications/{id} #
GET /metadata/classes Get all classes #
GET /metadata/classes/{class} Get a class by name #
GET /metadata/classes/{class}/properties Get class' properties by name #
GET /metadata/properties Get all properties #
GET /metadata/properties/{property} Get a property by name #
GET /metadata/properties/{property}/alt Get property's alt by property name #
GET /metadata/alts Get all alts as a lookup object where keys are property names and values are alts #
GET /metadata/alts-list Get all alts as a list #
GET /metadata/alts/{alt} Get alt values by alt name #
GET /collections Get a page of all collections #
GET /collections/roots Get a page of all root collections #
GET /collections/tree Get collection tree #
GET /collections/{id} Get collection by id #
GET /collections/{id}/children Get child collections #
GET /context/{context} JSON-LD context #
GET /form-permissions Get form permissions for a person #
GET /form-permissions/{collectionID} Get form permissions for a person, and the form information about whether it has MHL.restrictAccess or MHL.hasAdmins #
POST /form-permissions/{collectionID} Request access to form #
PUT /form-permissions/{collectionID}/{personID} Accept access to form #
DELETE /form-permissions/{collectionID}/{personID} Remove access to form #
POST /documents/batch Starts a batch job that validates the documents. Use the returned job id to get the status of the job with GET /documents/:jobID, or create the documents with POST /documents/batch #
GET /documents/batch/{jobID} Get a batch job's status. Once ready, the response will include properties 'documents' and 'errors', where the errors match the documents array indices, null meaning valid and an o #
POST /documents/batch/{jobID} Completes a given batch job by sending them to the store/warehouse. The batch job must be already validated. #
POST /documents/validate Validate a document #
GET /documents/count/byYear Get count of documents by type (currently just "byYear") #
GET /documents/stats Get the median date of documents for a named place #
GET /documents Get a page of documents #
POST /documents Create a new document #
GET /documents/{id} Get a document #
PUT /documents/{id} Update an existing document #
DELETE /documents/{id} Delete a document #
POST /named-places/{id}/reservation Reserve an existing named place #
DELETE /named-places/{id}/reservation Cancel a reservation for a named place #
GET /named-places Get a page of named places #
POST /named-places Create a new named place #
GET /named-places/{id} Get a named place by id #
PUT /named-places/{id} Update an existing named place #
DELETE /named-places/{id} Delete a named place #
GET /taxa Get a page of taxa #
POST /taxa Get a page of taxa with filters #
GET /taxa/aggregate Get an aggregate of taxa #
POST /taxa/aggregate Get an aggregate of taxa with filters #
GET /taxa/species Get a page of species #
POST /taxa/species Get a page of species with filters #
GET /taxa/species/aggregate Get a species aggregate #
POST /taxa/species/aggregate Get a species aggregate with filters #
GET /taxa/{id} Get a taxon by id #
GET /taxa/{id}/children Get children of a taxon #
POST /taxa/{id}/children Get children of a taxon #
GET /taxa/{id}/parents Get parents of a taxon #
POST /taxa/{id}/parents Get parents of a taxon #
GET /taxa/{id}/species Get species and subspecies of a taxon #
POST /taxa/{id}/species Get species and subspecies of a taxon with filters #
GET /taxa/{id}/species/aggregate Get an aggregate of species and subspecies of a taxon #
POST /taxa/{id}/species/aggregate Get an aggregate of species and subspecies of a taxon with filters #
GET /taxa/{id}/descriptions Get description texts of a taxon #
GET /taxa/{id}/media Get media objects of a taxon #
GET /areas/{id} Get an area by id #
GET /areas Get a page of areas #
GET /api-user Returns info about an API user #
POST /api-user Register as an api user. The access token will be sent to your email. You can use this endpoint to create a new access token in case you forget it. Note that it won't delete existi #
PUT /api-user/{email} Assing a systemID for an access token. Available only for ICT admins. #
DELETE /api-user/{accessToken} Delete API user by access token #
POST /images Upload image and get temporary id #
GET /images Get a page of images. Private/protected images aren't included. #
GET /images/{id} Get image by id #
PUT /images/{id} Update image metadata #
DELETE /images/{id} Delete image #
GET /images/{id}/large.jpg Fetch large image by id #
GET /images/{id}/square.jpg Fetch square thumbnail by id #
GET /images/{id}/thumbnail.jpg Fetch thumbnail by id #
POST /images/{tempId} Upload image metadata #
POST /audio Upload audio and get temporary id #
GET /audio Get a page of audio. Private/protected audio aren't included. #
GET /audio/{id} Get audio by id #
PUT /audio/{id} Update audio metadata #
DELETE /audio/{id} Delete audio #
GET /audio/{id}/mp3 Fetch mp3 by id #
GET /audio/{id}/thumbnail.jpg Fetch thumbnail by id #
GET /audio/{id}/wav Fetch wav by id #
GET /audio/{id}/flac Fetch flac by id #
POST /audio/{tempId} Upload audio metadata #
GET /annotations/tags Fetch all annotation tags #
GET /annotations Get a page of annotations #
POST /annotations Create a new annotation #
DELETE /annotations/{id} Delete an annotation. It's a soft delete, a succesful delete returns the updated annotation #
GET /information/{id} Get information page by id #
GET /checklists/{id} Get a checklist by id #
GET /checklists Get a page of checklists #
GET /checklist-versions/{id} Get a checklist by id #
GET /checklist-versions Get a page of checklists #
GET /organizations Get all organizations #
GET /organizations/{id} Find an organization by id #
GET /informal-taxon-groups Get a page of informal taxon groups #
GET /informal-taxon-groups/tree Get the informal taxon group tree #
GET /informal-taxon-groups/roots Get first level of the informal taxon group tree #
GET /informal-taxon-groups/{id} Get an informal taxon group by id #
GET /informal-taxon-groups/{id}/children Get an informal taxon group's immediate children #
GET /informal-taxon-groups/{id}/parent Get informal taxon group's parents #
GET /informal-taxon-groups/{id}/siblings Get informal taxon group's siblings #
POST /sound-identification #
GET /autocomplete/persons #
GET /autocomplete/friends #
GET /autocomplete/taxa #
GET /shorthand/unit/trip-report #
GET /shorthand/unit/list #
GET /shorthand/unit/line-transect #
GET /shorthand/unit/water-bird-pair-count #
POST /coordinates/location #
POST /feedback #
POST /html-to-pdf Convert HTML to PDF #
POST /logger/{level} Send a log event #
GET /logger/status Get info if there's log events #
GET /sources/{id} Get all sources #
GET /sources Get a source by id #
GET /red-list-evaluation-groups Get a page of red list evaluation groups #
GET /red-list-evaluation-groups/tree Get the red list evaluation group tree #
GET /red-list-evaluation-groups/roots Get first level of the red list evaluation group tree #
GET /red-list-evaluation-groups/{id} Get an red list evaluation group by id #
GET /red-list-evaluation-groups/{id}/children Get an red list evaluation group's immediate children #
GET /red-list-evaluation-groups/{id}/parent Get red list evaluation group's parents #
GET /red-list-evaluation-groups/{id}/siblings Get red list evaluation group's siblings #
GET /login Get temp token and login url to be used for the user authentication #
POST /login/check Check if the user has authenticated #
GET /publications/{id} #
GET /news Get a page of news #
GET /news/{id} Get news item #
POST /warehouse/push Load data to the Data Warehouse
DELETE /warehouse/push Report document deleted
GET /warehouse/query/document Get single full document.
GET /warehouse/query/document/aggregate Perform aggregate queries (group by) on documents.
GET /warehouse/query/gathering/aggregate Perform aggregate queries (group by) on gatherings.
GET /warehouse/query/gathering/statistics Perform aggregate queries on gatherings to PRIVATE side of the data warehouse.
GET /warehouse/query/unit/count Get count of units using given filters
GET /warehouse/query/unit/list Get list of units using given filters
GET /warehouse/query/unit/aggregate Perform aggregate queries (group by) on units.
GET /warehouse/query/unit/statistics Perform aggregate queries on units to PRIVATE side of the data warehouse.
GET /warehouse/query/annotation/list Get list of annotations using given filters
GET /warehouse/query/annotation/aggregate Perform aggregate queries (group by) on annotations.
GET /warehouse/query/unitMedia/list Get list of unit_medias using given filters
GET /warehouse/query/sample/count Get count of units using given filters
GET /warehouse/query/sample/list Get list of samples using given filters
GET /warehouse/query/sample/aggregate Perform aggregate queries (group by) on samples.
GET /warehouse/enumeration-labels Enumeration labels
GET /warehouse/enumeration-labels/{enumeration} Enumeration label
GET /warehouse/filters Filter descriptions
GET /warehouse/filters/{filter} Filter description
GET /warehouse/teamMember Team members
GET /warehouse/teamMember/{id} Team member
POST /warehouse/polygon Polygon ids for polygon search
GET /warehouse/polygon/{id} Polygon by polygonId
GET /trait/search Search traits
GET /trait/search/download Download traits
GET /trait/rows/{id} Get trait input row by id
PUT /trait/rows/{id} Update an input row
DELETE /trait/rows/{id} Delete an input row
POST /trait/rows/validate Validate adding a new input row
POST /trait/rows/validate-update/{id} Validate update of an input row
POST /trait/rows/validate-delete/{id} Validate deleting input row
POST /trait/rows Insert new input row
POST /trait/rows/tsv2rows/validate Validate TSV to InputRows conversion
POST /trait/rows/tsv2rows Convert TSV lines to InputRows
POST /trait/rows/multi/validate Validate adding a batch of input rows
POST /trait/rows/multi Store a batch of input rows
GET /trait/rows/search Search input rows
GET /trait/datasets Get all datasets
POST /trait/datasets Insert new dataset
GET /trait/datasets/{id} Get dataset by id
PUT /trait/datasets/{id} Update a dataset
DELETE /trait/datasets/{id} Delete a dataset
POST /trait/datasets/validate Validate adding a new dataset
POST /trait/datasets/validate-update/{id} Validate dataset update
POST /trait/datasets/validate-delete/{id} Validate deleting a dataset
GET /trait/dataset-permissions Get users all permissions (defined by personToken or - in absence - of the access_token)
GET /trait/dataset-permissions/{datasetId} Get permissions of a dataset
PUT /trait/dataset-permissions/{datasetId} Update permissions of a dataset
POST /trait/dataset-permissions/validate-update/{datasetId} Validate permission submission
GET /trait/trait-groups Get all trait groups
POST /trait/trait-groups Insert new trait group
GET /trait/trait-groups/{id} Get trait group by id
PUT /trait/trait-groups/{id} Update a trait group
DELETE /trait/trait-groups/{id} Delete a trait group
POST /trait/trait-groups/validate Validate adding a new trait group
POST /trait/trait-groups/validate-update/{id} Validate trait group update
POST /trait/trait-groups/validate-delete/{id} Validate deleting a trait group
GET /trait/traits Get all traits
POST /trait/traits Insert new trait
GET /trait/traits/{id} Get trait by id
PUT /trait/traits/{id} Update a trait
DELETE /trait/traits/{id} Delete a trait
POST /trait/traits/validate Validate adding a new trait
POST /trait/traits/validate-update/{id} Validate trait update
POST /trait/traits/validate-delete/{id} Validate deleting a trait
GET /trait/units Get all units of measurement
GET /trait/units/{id} Get unit of measurement by id
POST /geo-convert/convert-to-table Convert GIS file to CSV table #
POST /geo-convert/ Convert uploaded ZIP file to a zipped GeoPackage #
GET /geo-convert/status/{conversion_id} Check conversion status #
GET /geo-convert/health Health check #
GET /geo-convert/output/{conversion_id} Download conversion output #
GET /geo-convert/{dataset_id} Convert ZIP or TSV file from the data warehouse to a zipped GeoPackage #
GET /google-maps/geocode/json #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/finbif-laji"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

university-of-helsinki-finbif-laji-openapi.yml Raw ↑
openapi: 3.0.0
paths:
  /forms/{id}/participants:
    get:
      operationId: FormsController_getParticipants
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: Person-Token
        required: false
        description: Person's authentication token. It is required.
        in: header
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Participant'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Get participants of a form. Only for form admins.
      tags:
      - Forms
  /forms:
    get:
      operationId: FormsController_getListing
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/FormListing'
                  '@context':
                    type: string
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Get a page of forms
      tags:
      - Forms
    post:
      operationId: FormsController_create
      parameters: []
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/store-form'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Create a new form
      tags:
      - Forms
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/store-form'
  /forms/{id}:
    get:
      operationId: FormsController_getOne
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: format
        required: false
        in: query
        schema:
          default: schema
          type: string
          enum:
          - schema
          - json
      - name: expand
        required: false
        in: query
        description: Expand response
        schema:
          default: true
          type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Form'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Get a form by id
      tags:
      - Forms
    put:
      operationId: FormsController_update
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/store-form'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Update an existing form
      tags:
      - Forms
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/store-form'
    delete:
      operationId: FormsController_remove
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Delete a form
      tags:
      - Forms
  /forms/transform:
    post:
      operationId: FormsController_transform
      parameters: []
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/store-form'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Get preview of form transformed from json format to schema format
      tags:
      - Forms
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/store-form'
  /person/profile:
    get:
      operationId: PersonsController_findProfileByPersonToken
      parameters:
      - name: Person-Token
        required: false
        description: Person's authentication token. It is required.
        in: header
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/store-profile'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Get profile
      tags:
      - Person
    post:
      operationId: PersonsController_createProfile
      parameters:
      - name: Person-Token
        required: false
        description: Person's authentication token. It is required.
        in: header
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/store-profile'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/store-profile'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Create profile
      tags:
      - Person
    put:
      operationId: PersonsController_updateProfile
      parameters:
      - name: Person-Token
        required: false
        description: Person's authentication token. It is required.
        in: header
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/store-profile'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/store-profile'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Update profile
      tags:
      - Person
  /person/{id}:
    get:
      operationId: PersonsController_findPersonByPersonId
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SensitivePerson'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '406':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '422':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
        '500':
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                  message:
                    type: string
                  localized:
                    type: boolean
      security:
      - Access token: []
      - Lang: []
      - Person token: []
      summary: Find person by user id (this will not include email)
      tags:
      - Person
  /person:
    get:
      operationId: PersonsController_findPersonByToken
      parameters:
      - name: Person-Token
        required: false
        description: Person's authentication token. It is required.
        in: header
        s

# --- truncated at 32 KB (2665 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-helsinki/refs/heads/main/openapi/university-of-helsinki-finbif-laji-openapi.yml