---
openapi: 3.0.1
info:
title: Opendata Registered Notices Api
version: 2.0
license:
name: Creative Commons Nimeä 4.0
url: https://creativecommons.org/licenses/by/4.0/
servers:
- url: https://avoindata.prh.fi/opendata-registerednotices-api/v3
paths:
/{businessId}:
get:
summary: "Search for a company's details and notification details by Business ID"
operationId: GetCompany
parameters:
- in: path
name: businessId
required: true
description: "An exact Business ID"
schema:
type: string
responses:
200:
description: "OK"
content:
application/json:
schema:
$ref: '#/components/schemas/Company'
400:
description: "Bad request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
429:
description: "Too many requests"
content:
text/plain:
schema:
type: string
500:
description: "Internal server error"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
503:
description: "The server cannot process the request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/:
get:
summary: "Search for details of registered notifications by various criteria"
operationId: GetCompanies
parameters:
- in: query
name: name
description: "A company name or a prefix of it"
schema:
type: string
- in: query
name: businessId
description: "A Business ID"
schema:
type: string
- in: query
name: location
description: "Town or city"
schema:
type: string
- in: query
name: companyForm
description: >
A company form type
schema:
type: string
enum: [ "AOY", "ASH", "ASY", "AY", "AYH", "ETS", "ETY", "SCE", "SCP", "HY", "KOY", "KVJ", "KVY", "KY", "OK",
"OP", "OY", "OYJ", "SE", "SL", "SP", "SÄÄ", "TYH", "VOJ", "VOY", "VY", "VALTLL"]
- in: query
name: registrationDateStart
description: "Company registration date over a period of time (write the start date in the format yyyy-mm-dd)"
schema:
type: string
format: date
minLength: 10
maxLength: 10
- in: query
name: registrationDateEnd
description: "Company registration date over a period of time (write the end date in the format yyyy-mm-dd)"
schema:
type: string
format: date
minLength: 10
maxLength: 10
- in: query
name: recordNumber
description: "A record number"
schema:
type: string
- in: query
name: entryCode
description: >
Select register entry heading
schema:
type: string
enum: [ "ALE", "ALLEK", "ANTIK", "ANTIP", "ANTIPP", "ARVO", "ASH", "ASTO", "ASY", "EDU", "ELI",
"ELLI", "ELSI", "ELUPA", "EMU", "EOJ", "EOJ4", "EPO", "ERIK", "ERIOI", "ESR", "ETJÄS",
"ETY", "EUSI", "EUVAL", "FUUSI", "HAL", "HALE", "HKJ", "HN", "HNE", "IAT", "IHA", "IKJ",
"IKV", "IMH", "IPA", "ISAN", "ISM", "ISV", "ITA", "IUM", "JAKEO", "JAKEP", "JAKHYL",
"JAKKUU", "JAKLLP", "JAKLOP", "JAKMUU", "JAKRAU", "JAKSUU", "JAPPO", "JOH", "JOHE", "JOHT",
"JOPO", "JULKUU", "JULPE", "JULU", "JÄSEN", "KANRA", "KANTA", "KEHOTU", "KLAJI", "KONALK",
"KONLOP", "KONRAU", "KOR", "KOROI", "KOTI", "KRM", "KUO", "KUUL", "KVE", "KVO", "LAA",
"LAKK", "LIIKUU", "LIILOP", "LIILUP", "LIISUU", "LMAKS", "LOPTIL", "LOSU", "LUNAS",
"LUNRI", "LUNVAL", "LUOVAL", "LUPEP", "LUPLOP", "LUPLOPP", "MAKSU", "MUI", "MUU", "MUUNTO",
"MUUSUU", "NIMA", "NIMAR", "NIML", "NIMO", "NIMOE", "NIMP", "NIMPE", "NIMPO", "NOPA",
"NORA", "NORTIL", "OALE", "OANKO", "OANTI", "OIK", "OIKP", "OLAJI", "OPJÄS", "OPO",
"OPOKO", "OPOMEN", "OPTIO", "OSAVU", "OSK", "OSK/R", "OSLUKU", "OSLUN", "OSLUNP", "OSLUO",
"OSMIT", "OSU", "OSUUS", "OSYHD", "OVE", "PALA", "PALE", "PEK", "PEKO", "PEPO", "PERPY",
"PERSUU", "PERUS", "POHJA", "POHJAE", "POISTO", "POITIL", "POIUH", "PTK", "SANALK",
"SANERO", "SANLOP", "SANRAJ", "SANSEL", "SELA", "SELAS", "SELJUL", "SELLOP", "SELM",
"SELME", "SELO", "SELOE", "SIIKUU", "SIILUP", "SIISUU", "SIIVAL", "SL", "SOLA", "SPO",
"STA", "STARA", "SULEO", "SULEP", "SULHYL", "SULKUU", "SULLLP", "SULLOP", "SULLUP",
"SULMUU", "SULRAK", "SULRAU", "SULSOP", "SULSUU", "SULTIE", "SULTIL", "SUOST", "SVE",
"SÄÄSTÖ", "TAL", "TALA", "TALPU", "TASE", "TEDU", "TEKSTI", "TIEELÄ", "TIEJUL", "TIEMUU",
"TILIKA", "TILTAE", "TILTAP", "TILTAR", "TLAJI", "TMI", "TMIA", "TMIAR", "TMIR", "TNIMAR",
"TOIJAT", "TOIM", "TOLUKU", "TOYHD", "TPKOR", "TPO", "TPSIJ", "TUNMU", "TUPLA", "TVE",
"ULKEDU", "ULKERO", "ULKOS", "USMI", "UTILI", "VAALI", "VAH/A", "VAH/M", "VAI", "VAIPA",
"VAIPAP", "VAIRA", "VAL", "VALIP", "VALP", "VALTPO", "VELALK", "VELLOP", "VKAKI", "VVOPT",
"VÄLKI", "YEH", "YHEN", "YHENE", "YHM", "YHME", "YHMUU", "YJ", "YMAKS", "YMUSUU", "YMUU" ]
- in: query
name: noticeRegistrationDateStart
description: "Notification registration date over a period of time (write the start date in the format yyyy-mm-dd)"
schema:
type: string
format: date
minLength: 10
maxLength: 10
- in: query
name: noticeRegistrationDateEnd
description: "Notification registration date over a period of time (write the end date in the format yyyy-mm-dd)"
schema:
type: string
format: date
minLength: 10
maxLength: 10
- in: query
name: noticeRegistrationType
description: >
Select type of notification
schema:
type: string
enum: [ "DIF", "FUU", "H", "JH", "KM", "M", "OI", "T", "TA", "U", "VA" ]
- in: query
name: page
description: "If your search returns more than 50 results, they are shown on multiple pages. Use the page parameter to indicate the results page you need. If the page parameter is not used, the results of the first page are returned. If the page parameter points to a page not included in the results (for instance if you search for page 5 and the results only have 3 pages), an empty response is returned."
schema:
type: integer
format: int32
responses:
200:
description: "OK"
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyResult'
400:
description: "Bad request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
429:
description: "Too many requests"
content:
text/plain:
schema:
type: string
500:
description: "Internal server error"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
503:
description: "The server cannot process the request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/publicnotices/{recordYear}/{recordNumber}:
get:
summary: "Search for registered notifications by record number"
operationId: GetPublicNotices
parameters:
- in: path
name: recordYear
required: true
description: "A year of record number"
schema:
type: integer
format: int32
- in: path
name: recordNumber
required: true
description: "A record number"
schema:
type: string
responses:
200:
description: "OK"
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyPublicNotice'
400:
description: "Bad request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
429:
description: "Too many requests"
content:
text/plain:
schema:
type: string
500:
description: "Internal server error"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
503:
description: "The server cannot process the request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/description:
get:
summary: "Retrieve code list details"
operationId: GetDescription
parameters:
- in: query
name: code
required: true
description: "Code"
schema:
type: string
enum: [ "CF", "EC", "NRT" ]
- in: query
name: lang
required: true
description: "Language code"
schema:
type: string
enum: [ "EN", "FI", "SV" ]
responses:
200:
description: "OK"
content:
text/plain:
schema:
type: string
400:
description: "Bad request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
429:
description: "Too many requests"
content:
text/plain:
schema:
type: string
500:
description: "Internal server error"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
503:
description: "The server cannot process the request"
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
CompanyResult:
type: object
description: "Details of company or organisation"
required: ["totalResults", "companies"]
properties:
totalResults:
type: integer
format: int64
description: "Total number of results"
companies:
type: array
description: "Details of company or organisation"
items:
$ref: '#/components/schemas/Company'
Company:
type: object
description: "Details of company or organisation"
required: ["businessId", "registeredEntries", "tradeRegisterStatus", "lastModified"]
properties:
businessId:
type: object
required: ["value", "source"]
description: "Business ID, for example 0116297-6"
properties:
value:
type: string
description: "Business ID"
minLength: 9
maxLength: 9
registrationDate:
type: string
nullable: true
format: date
description: "Y-tunnuksen antamispäivä"
minLength: 10
maxLength: 10
source:
$ref: '#/components/schemas/Source'
euId:
type: object
required: ["value", "source"]
description: "EUID, for example FIFPRO.0116297-6"
properties:
value:
type: string
description: "EUID"
minLength: 16
maxLength: 16
source:
$ref: '#/components/schemas/Source'
names:
type: array
description: "Company names; company name, parallel company names and auxiliary company names"
items:
$ref: '#/components/schemas/RegisterName'
minItems: 0
mainBusinessLine:
type: object
required: ["type", "source"]
description: "Main line of business"
properties:
type:
type: string
description: "TOL 2008 code"
minLength: 2
maxLength: 5
descriptions:
type: array
description: "TOL 2008 descriptions"
items:
$ref: '#/components/schemas/DescriptionEntry'
minItems: 0
typeCodeSet:
type: string
description: "Code lists TOIMI, TOIMI2 and TOIMI3 of the Standard Industrial Classification TOL 2008"
minLength: 5
maxLength: 6
registrationDate:
type: string
nullable: true
format: date
description: "Start date of TOL 2008 code in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
source:
$ref: '#/components/schemas/Source'
website:
type: object
required: ["url", "source"]
description: "Company's website"
properties:
url:
type: string
description: "Website"
minLength: 0
maxLength: 255
registrationDate:
type: string
nullable: true
format: date
minLength: 10
maxLength: 10
source:
$ref: '#/components/schemas/Source'
companyForms:
type: array
description: "Company form and previous details, if any"
items:
$ref: '#/components/schemas/CompanyForm'
minItems: 0
maxItems: 2
companySituations:
type: array
description: "Company situation (restructuring, liquidation or bankruptcy, if any)"
items:
$ref: '#/components/schemas/CompanySituation'
minItems: 0
registeredEntries:
type: array
description: "Company’s register entries"
items:
$ref: '#/components/schemas/RegisteredEntry'
minItems: 0
addresses:
type: array
description: "Company’s street or postal address"
items:
$ref: '#/components/schemas/Address'
minItems: 0
maxItems: 2
publicNotices:
type: array
description: "Registered notifications"
items:
$ref: '#/components/schemas/PublicNotice'
tradeRegisterStatus:
type: string
description: >
[Company status on the Finnish Trade Register](/opendata-ytj-api/v3/description?code=REK_KDI&lang=en)
status:
type: string
description: >
[Business ID status](/opendata-ytj-api/v3/description?code=STATUS3&lang=en)
registrationDate:
type: string
nullable: true
format: date
description: "Date of registration of the company in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
endDate:
type: string
nullable: true
minLength: 10
maxLength: 10
format: date
description: "Date of dissolution in the format yyyy-mm-dd"
lastModified:
type: string
minLength: 19
maxLength: 19
format: date-time
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd HH:mm:ss\")"
description: "Latest update, including seconds, without a time zone in the format ‘yyyy-mm-dd 00:00:00'"
Address:
type: object
description: "Address details"
required: ["type", "source"]
properties:
type:
type: integer
format: int32
description: "Type of address, street address: 1, postal address: 2. "
street:
type: string
nullable: true
description: "Street address"
minLength: 0
maxLength: 50
postCode:
type: string
nullable: true
description: "Postal code"
minLength: 0
maxLength: 5
postOffices:
type: array
description: "Town or city in various languages"
items:
$ref: '#/components/schemas/PostOffice'
minItems: 0
postOfficeBox:
type: string
nullable: true
description: "PO Box"
minLength: 0
maxLength: 5
buildingNumber:
type: string
nullable: true
description: "Building"
minLength: 0
maxLength: 13
entrance:
type: string
nullable: true
description: "Entrance"
minLength: 0
maxLength: 13
apartmentNumber:
type: string
nullable: true
description: "Apartment"
minLength: 0
maxLength: 4
apartmentIdSuffix:
type: string
nullable: true
description: "Divider"
minLength: 0
maxLength: 1
co:
type: string
nullable: true
description: "C/o in the address"
minLength: 0
maxLength: 34
country:
type: string
nullable: true
description: "Two-letter country code"
minLength: 0
maxLength: 2
freeAddressLine:
type: string
nullable: true
description: "Free-format address for instance for an address outside Finland. Returns are replaced by spaces, spaces are replaced by underscores, such as in Norgårdsvägen_3 _ SE-451_75 Uddevalla."
minLength: 0
maxLength: 1000
registrationDate:
type: string
nullable: true
format : date
description: "Date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
source:
$ref: '#/components/schemas/Source'
RegisterName:
type: object
description: "Name details"
required: ["name", "type", "version", "source"]
properties:
name:
type: string
description: "Company name"
minLength: 0
maxLength: 1000
type:
type: string
description: >
[Type of name](/opendata-ytj-api/v3/description?code=TLAJI&lang=en)
minLength: 1
maxLength: 8
registrationDate:
type: string
nullable: true
format: date
description: "Date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
endDate:
type: string
nullable: true
format: date
description: "End date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
version:
type: integer
format: int32
description: "Version, 1 is the current version, other numbers are previous versions"
source:
$ref: '#/components/schemas/Source'
CompanyForm:
type: object
required: ["type", "version", "source"]
description: "Company form"
properties:
type:
type: string
description: >
[Company form code](/opendata-ytj-api/v3/description?code=YRMU&lang=en)
minLength: 1
maxLength: 8
descriptions:
type: array
description: "Company form descriptions"
items:
$ref: '#/components/schemas/DescriptionEntry'
minItems: 0
registrationDate:
type: string
nullable: true
format: date
description: "Date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
endDate:
type: string
nullable: true
format: date
description: "End date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
version:
type: integer
format: int32
description: "Version, 1 is the current version, other numbers are previous versions"
source:
$ref: '#/components/schemas/Source'
CompanySituation:
type: object
required: ["type", "source"]
description: "Company situation (restructuring, liquidation or bankruptcy, if any)"
properties:
type:
type: string
description: >
[Company situation code](/opendata-ytj-api/v3/description?code=SELTILA,SANE,KONK&lang=en)
enum: ["SANE", "SELTILA", "KONK"]
registrationDate:
type: string
nullable: true
format: date
description: "Date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
endDate:
type: string
nullable: true
format: date
description: "End date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
source:
$ref: '#/components/schemas/Source'
RegisteredEntry:
type: object
required: ["type", "register", "authority"]
description: "Register entries"
properties:
type:
type: string
description: >
[Company registration status code](/opendata-ytj-api/v3/description?code=REK_KDI&lang=en). Must be interpreted in the REK_KDI code list by combining the register entry code with the register code separated by an underscore, such as in '1_0', indicating unregistered on the Finnish
minLength: 1
maxLength: 8
descriptions:
type: array
description: "Registration status descriptions"
items:
$ref: '#/components/schemas/DescriptionEntry'
minItems: 0
registrationDate:
type: string
nullable: true
format: date
description: "Date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
endDate:
type: string
nullable: true
format: date
description: "End date of registration in the format yyyy-mm-dd"
minLength: 10
maxLength: 10
register:
type: string
description: >
[Register code](/opendata-ytj-api/v3/description?code=REK&lang=en)
minLength: 1
maxLength: 8
authority:
type: string
description: >
[Authority code](/opendata-ytj-api/v3/description?code=VIRANOM&lang=en)
minLength: 1
maxLength: 8
Source:
type: string
description: >
Data source
DescriptionEntry:
type: object
required: ["languageCode"]
description: "Data description"
properties:
languageCode:
type: string
description: "Language code, 1 - Finnish, 2 - Swedish, 3 - English"
maxLength: 2
description:
type: string
description: "Code description"
nullable: true
maxLength: 255
PostOffice:
type: object
required: ["city", "languageCode"]
description: "Postal addresses"
properties:
city:
type: string
description: "Town or city"
maxLength: 50
languageCode:
type: string
description: >
[Language code](/opendata-ytj-api/v3/description?code=KIELI&lang=en)
maxLength: 8
municipalityCode:
type: string
description: "Municipality code"
nullable: true
minLength: 3
maxLength: 3
PostOfficeEntry:
type: object
required: ["postCode", "city", "active", "languageCode"]
description: "Postal addresses"
properties:
postCode:
type: string
description: "Postal code"
minLength: 5
maxLength: 5
city:
type: string
description: "Town or city"
maxLength: 50
active:
type: boolean
description: "Is the detail active"
languageCode:
type: string
description: >
[Language code](/opendata-ytj-api/v3/description?code=KIELI&lang=en)
maxLength: 8
municipalityCode:
type: string
description: "Municipality code"
nullable: true
minLength: 3
maxLength: 3
PublicNotice:
type: object
required: [ "recordNumber" ]
description: ""
properties:
registrationDate:
type: string
format: date
description: "Date of registration"
recordNumber:
type: string
description: "Record number of entry"
typeOfRegistration:
type: string
description: "Registration type of entry"
entryCodes:
type: array
description: "Entry codes"
items:
type: string
CompanyPublicNotice:
type: object
required: [ "businessId", "recordNumber" ]
description: ""
properties:
businessId:
type: string
description: "A Business ID of company"
registrationDate:
type: string
format: date
description: "Date of registration"
recordNumber:
type: string
description: "Record number of entry"
typeOfRegistration:
type: string
description: "Registration type of entry"
entryCodes:
type: array
description: "Entry codes"
items:
type: string
companyDetailsUri:
type: string
description: "A record URI for details"
ErrorResponse:
type: object
required: [ "timestamp", "code" ]
description: "Error message"
properties:
timestamp:
type: string
minLength: 19
maxLength: 19
format: date-time
x-field-extra-annotation: "@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = \"yyyy-MM-dd HH:mm:ss\")"
description: "Time, including seconds, without a time zone in the format ‘YYYY-MM-DD 00:00:00'"
message:
type: string
description: "Error message"
maxLength: 1000
errorcode:
type: integer
format: int32
description: "Error code"
externalDocs:
description: "Find out more about the Swagger software"
url: 'http://swagger.io'