export interface BrregCompany {
organisasjonsnummer: string;
navn: string;
organisasjonsform: {
kode: string;
beskrivelse: string;
};
hjemmeside?: string;
registreringsdatoEnhetsregisteret: string;
registrertIMvaregisteret: boolean;
registrertIForetaksregisteret: boolean;
registrertIStiftelsesregisteret: boolean;
registrertIFrivillighetsregisteret: boolean;
antallAnsatte?: number;
forretningsadresse: {
adresse: string[];
postnummer: string;
poststed: string;
kommunenummer: string;
kommune: string;
landkode: string;
land: string;
};
postadresse: {
adresse: string[];
postnummer: string;
poststed: string;
kommunenummer: string;
kommune: string;
landkode: string;
land: string;
};
naeringskode1?: {
kode: string;
beskrivelse: string;
};
naeringskode2?: {
kode: string;
beskrivelse: string;
};
naeringskode3?: {
kode: string;
beskrivelse: string;
};
institusjonellSektorkode?: {
kode: string;
beskrivelse: string;
};
}
export interface BrregSubunit {
organisasjonsnummer: string;
navn: string;
organisasjonsform: {
kode: string;
beskrivelse: string;
};
overordnetEnhet: string;
hjemmeside?: string;
registreringsdatoEnhetsregisteret: string;
registrertIMvaregisteret: boolean;
antallAnsatte?: number;
beliggenhetsadresse: {
adresse: string[];
postnummer: string;
poststed: string;
kommunenummer: string;
kommune: string;
landkode: string;
land: string;
};
naeringskode1?: {
kode: string;
beskrivelse: string;
};
naeringskode2?: {
kode: string;
beskrivelse: string;
};
naeringskode3?: {
kode: string;
beskrivelse: string;
};
oppstartsdato?: string;
nedleggelsesdato?: string;
}
export interface BrregRole {
type: string;
beskrivelse: string;
person?: {
fødselsnummer?: string;
navn: string;
fødselsdato?: string;
statsborgerskap?: string;
bostedsadresse?: {
land: string;
adresse: string[];
postnummer: string;
poststed: string;
};
kommunenummer?: string;
korrespondanseadresse?: {
land: string;
adresse: string[];
postnummer: string;
poststed: string;
};
};
enhet?: {
organisasjonsnummer: string;
navn: string;
organisasjonsform: {
kode: string;
beskrivelse: string;
};
};
gyldigFra?: string;
gyldigTil?: string;
}
export interface BrregSearchResponse {
_embedded: {
enheter: BrregCompany[];
};
_links: {
self: {
href: string;
};
first?: {
href: string;
};
prev?: {
href: string;
};
next?: {
href: string;
};
last?: {
href: string;
};
};
page: {
size: number;
totalElements: number;
totalPages: number;
number: number;
};
}
export interface BrregErrorResponse {
feilmelding: string;
feilkode: string;
tidspunkt: string;
}
export class BrregAPIError extends Error {
constructor(
message: string,
public status?: number,
public code?: string,
public timestamp?: string
) {
super(message);
this.name = 'BrregAPIError';
}
}
export class BrregRateLimitError extends BrregAPIError {
constructor(message: string = 'Rate limit exceeded') {
super(message, 429, 'RATE_LIMIT_EXCEEDED');
this.name = 'BrregRateLimitError';
}
}
export class BrregNotFoundError extends BrregAPIError {
constructor(message: string = 'Resource not found') {
super(message, 404, 'NOT_FOUND');
this.name = 'BrregNotFoundError';
}
}
export class BrregValidationError extends BrregAPIError {
constructor(message: string = 'Validation error') {
super(message, 400, 'VALIDATION_ERROR');
this.name = 'BrregValidationError';
}
}
// NACE Classification Types
export interface ContactPersonResource {
name: string;
email: string;
phone: string;
}
export interface CorrespondenceTableSummaryResource {
name: string;
id: number;
contactPerson: ContactPersonResource;
owningSection: string;
source: string;
sourceId: number;
target: string;
targetId: number;
changeTable: boolean;
lastModified: string;
published: string[];
sourceLevel: any;
targetLevel: any;
_links: {
self: { href: string };
source: { href: string; templated: boolean };
target: { href: string; templated: boolean };
};
}
export interface ClassificationVariantSummaryResource {
// Add relevant fields if needed
}
export interface ChangelogResource {
// Add relevant fields if needed
}
export interface LevelResource {
levelNumber: number;
levelName: string;
}
export interface ClassificationItemResource {
code: string;
parentCode: string;
level: string;
name: string;
shortName: string;
notes: string;
}
export interface Links {
self: { href: string };
first?: { href: string };
prev?: { href: string };
next?: { href: string };
last?: { href: string };
}
export interface RepresentationModelObject {
// Add relevant fields if needed
}
export interface PageMetadata {
size: number;
totalElements: number;
totalPages: number;
number: number;
}
export interface ClassificationVersionResource {
name: string;
id: number;
validFrom: string;
validTo?: string;
lastModified: string;
published: string[];
introduction: string;
contactPerson: ContactPersonResource;
owningSection: string;
legalBase: string;
publications: string;
derivedFrom: string;
correspondenceTables: CorrespondenceTableSummaryResource[];
classificationVariants: ClassificationVariantSummaryResource[];
changelogs: ChangelogResource[];
levels: LevelResource[];
classificationItems: ClassificationItemResource[];
_links: Links;
_embedded?: {
representationModelList: RepresentationModelObject[];
};
page?: PageMetadata;
}
// Enhanced NACE Code interface for the new data structure
export interface NACECodeEnhanced {
code: string;
name: string;
shortName: string;
parentCode: string;
level: string;
notes: string;
fullCodePath: string;
}