{"openapi":"3.1.0","info":{"title":"companydata.dk API","description":"\nThe companydata.dk API provides comprehensive access to Danish company data from the CVR registry.\n\n## Quick Start\n\n**1. Get your API key** at [companydata.dk](https://companydata.dk)\n\n**2. Make your first request:**\n\n```bash\ncurl \"https://api.companydata.dk/v1/companies?q=novo\" \\\n  -H \"Authorization: Bearer sk_live_your_api_key\"\n```\n\n**3. Explore the endpoints below** to search companies, access financials, ownership data, and more.\n\n---\n\n## Authentication\n\nAll requests require an API key in the Authorization header:\n\n```\nAuthorization: Bearer sk_live_your_api_key\n```\n\nAPI keys start with `sk_live_` followed by a 32-character string. Keep your key secret and never expose it in client-side code.\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **Company Search** | Search by name, CVR, industry, municipality, employee count |\n| **Screening** | Filter the register on financial key figures, size, industry and geography |\n| **Financial Data** | Parsed annual reports with revenue, profit, assets, key ratios |\n| **Ownership & Management** | Ownership structures, board members, beneficial owners |\n| **Production Units** | Physical locations (P-enheder) with addresses and coordinates |\n| **Account & Usage** | Check API key info and monitor your usage statistics |\n| **cvrapi.dk compatibility** | Coming from cvrapi.dk? Change the base URL to `api.companydata.dk/cvrapi` and keep your code |\n\n---\n\n## Subscription Tiers\n\n| Tier | Rate Limit | Monthly Quota | Endpoints |\n|------|------------|---------------|-----------|\n| **Basic (Free)** | 60/min | 1,000 | Search, Company Details |\n| **Pro** | 300/min | 300,000 | All endpoints |\n\n### Basic Tier Endpoints (Free)\n- `GET /v1/companies` - Search companies\n- `GET /v1/companies/{cvr}` - Get company details\n- `GET /v1/companies/autocomplete` - Search autocomplete\n- `GET /cvrapi/api` - cvrapi.dk-compatible lookup (50 a day for everyone, also without a key; a key adds its quota on top)\n\n### Pro Tier Endpoints\nAll Basic endpoints plus:\n- `GET /v1/companies/{cvr}/financials` - Financial statements\n- `GET /v1/companies/{cvr}/timeline` - Company history\n- `GET /v1/companies/{cvr}/portfolio` - Owned companies\n- `GET /v1/companies/{cvr}/production-units` - P-enheder\n- `GET /v1/participants/*` - Participant/ownership data\n- `GET /v1/production-units/*` - Production unit search\n- `POST /v1/screen` - Screen companies on key figures, size, industry, geography\n- `POST /v1/screen/count` - Count companies matching screening filters\n\nUpgrade at [companydata.dk/priser](https://companydata.dk/priser)\n\n---\n\n## Rate Limits\n\nRate limit headers are included in every response:\n- `X-RateLimit-Limit` - Max requests per minute\n- `X-RateLimit-Remaining` - Requests left in current window\n- `X-RateLimit-Reset` - Unix timestamp when window resets\n- `X-Monthly-Usage` - Requests made this month\n- `X-Monthly-Limit` - Monthly request limit of your plan\n- `X-Monthly-Remaining` - Requests you can still make this month, **including purchased credits**\n- `X-Credits-Remaining` - Unspent purchased credits (only sent when you hold any)\n\nPurchased credits are drawn on automatically once the monthly limit is\nreached, so `X-Monthly-Remaining` is the number to watch: while it is above\nzero, keep going. `GET /v1/account/usage` reports the same figures as\n`requests_remaining` and `credits_remaining`.\n\nWhen rate limited, you'll receive a `429` response with a `Retry-After` header.\n\nA free key that looks up an unusually large number of different companies\nwithin an hour is limited to 1 request per minute while we review it. That\n`429` carries `X-RateLimit-Reason: under-review` and a body that says so.\nThe same applies to a new free account on a network address whose free\nquota has already been used this month. Nothing is blocked: a credit pack\nlifts it immediately, or write to support@companydata.dk.\n\nPro tier endpoints return `403 Forbidden` if accessed with a Basic tier API key.\n\n---\n\n## Response Format\n\nAll responses follow this structure:\n\n```json\n{\n  \"data\": { ... },\n  \"meta\": { \"request_id\": \"req_abc123\" },\n  \"pagination\": {\n    \"page\": 1,\n    \"limit\": 25,\n    \"total\": 150,\n    \"pages\": 6\n  }\n}\n```\n\n---\n\n## Code Examples\n\n### JavaScript\n```javascript\nconst response = await fetch(\n  \"https://api.companydata.dk/v1/companies?q=novo\",\n  { headers: { \"Authorization\": \"Bearer sk_live_your_key\" } }\n);\nconst data = await response.json();\n```\n\n### Python\n```python\nimport requests\n\nresponse = requests.get(\n    \"https://api.companydata.dk/v1/companies\",\n    params={\"q\": \"novo\"},\n    headers={\"Authorization\": \"Bearer sk_live_your_key\"}\n)\ndata = response.json()\n```\n\n---\n\n## Support\n\nQuestions or issues? Contact **support@companydata.dk**\n","version":"1.0.0"},"paths":{"/v1/companies/recent":{"get":{"tags":["Companies"],"summary":"/companies/recent","description":"Get recently registered companies, sorted by registration date (newest first).\n\nOptionally filter by industry code or municipality code. Both filters\naccept multiple comma-separated codes (matches any of them).","operationId":"recent_companies_v1_companies_recent_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by industry code. Accepts multiple comma-separated codes, e.g. `561110,563000`","title":"Industry"},"description":"Filter by industry code. Accepts multiple comma-separated codes, e.g. `561110,563000`"},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by municipality code. Accepts multiple comma-separated codes, e.g. `101,147` (matches any of them).","title":"Municipality"},"description":"Filter by municipality code. Accepts multiple comma-separated codes, e.g. `101,147` (matches any of them)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of results","default":10,"title":"Limit"},"description":"Number of results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies":{"get":{"tags":["Companies"],"summary":"/companies","description":"Search companies with filters.\n\nBy default only active companies are returned. When `lat` and `lng` are provided,\nresults are sorted by distance from the center point and include `distance_meters`.\n\nThe `industry` and `type` filters accept multiple comma-separated values and\nmatch any of them.\n\n**Pagination without `lat`/`lng`:** `pagination.total_is_exact` indicates whether `total` is\nan exact count. When false, `total` is a lower bound (counts are capped at\n1,000 or may be incomplete after a query timeout), and `pages` is derived\nfrom that lower bound.\n\nFilter-only browsing (for example, `industry=561110` without a name query)\nstill returns data beyond row 1,000: `page=11&limit=100` is supported even\nwhen `pages` is 10. Do not treat `pages` as an end marker when\n`total_is_exact` is false. An incomplete empty response is not proof that\nno companies match; retry or narrow the filters if a query times out.\n\nName searches rank at most 1,000 candidates. Refine `q` or add filters\nwhen their count is incomplete; deeper pages cannot extend this ranked\nwindow. Query time budgets and rate limits apply to all pages.\n\n**Chains and franchisees:** a name search also matches binavne (secondary\nnames) and the names of active production units. `q=7-eleven` returns the\nfranchisees whose shops are registered as \"7-Eleven Butik ...\" although the\ncompanies have other names; those results carry `matched_units` and rank\nafter every company whose current name or binavn contains the query.\nCompanies found only through other full-text matches, such as a former\nname, come last. Names that differ only in spaces or punctuation match\nalike (`7eleven`, `7-eleven`, `7 eleven`). A result whose current name\ndoes not contain the query carries `matched_name`: the binavn or former\nname that does (`q=7-eleven` finds REITAN CONVENIENCE DENMARK A/S through\nits binavn 7-ELEVEN A/S).\n\n**Examples:**\n- Text search: `/v1/companies?q=Copenhagen`\n- Location search: `/v1/companies?lat=55.6761&lng=12.5683&radius=2000`\n- Combined: `/v1/companies?q=cafe&lat=55.6761&lng=12.5683&radius=1000&type=APS`\n- Multiple industries near a point: `/v1/companies?industry=561110,563000,551110&lat=55.6761&lng=12.5683&radius=2000`","operationId":"search_companies_endpoint_v1_companies_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (active, dissolved)","title":"Status"},"description":"Filter by status (active, dissolved)"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Include inactive/dissolved companies","default":false,"title":"Include Inactive"},"description":"Include inactive/dissolved companies"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company type (APS, AS, etc.). Accepts multiple comma-separated values.","title":"Type"},"description":"Filter by company type (APS, AS, etc.). Accepts multiple comma-separated values."},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by industry code. Accepts multiple comma-separated codes, e.g. `561110,563000` (matches any of them).","title":"Industry"},"description":"Filter by industry code. Accepts multiple comma-separated codes, e.g. `561110,563000` (matches any of them)."},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by municipality code. Accepts multiple comma-separated codes, e.g. `101,147` (matches any of them).","title":"Municipality"},"description":"Filter by municipality code. Accepts multiple comma-separated codes, e.g. `101,147` (matches any of them)."},{"name":"postal_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by postal code (4 digits)","title":"Postal Code"},"description":"Filter by postal code (4 digits)"},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Latitude for location-based search","title":"Lat"},"description":"Latitude for location-based search"},{"name":"lng","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude for location-based search","title":"Lng"},"description":"Longitude for location-based search"},{"name":"radius","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":50,"description":"Search radius in meters (min 50m, max 50km)","default":1000,"title":"Radius"},"description":"Search radius in meters (min 50m, max 50km)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page","default":25,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__models__company__CompanySearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/autocomplete":{"get":{"tags":["Companies"],"summary":"/companies/autocomplete","description":"Fast autocomplete for search boxes.","operationId":"autocomplete_v1_companies_autocomplete_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"Max results","default":10,"title":"Limit"},"description":"Max results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutocompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/export":{"get":{"tags":["Companies"],"summary":"/companies/export","description":"Export search results to Excel.\n\nReturns an Excel file (.xlsx) with company data matching the search criteria.\n\n**Limits:**\n- Free tier: 100 companies max\n- Pro tier: 500 companies max\n\n**Columns included:**\nCVR, Name, Status, Company Type, Industry Code, Industry Name,\nAddress, Postal Code, City, Municipality, Employees, Revenue, Revenue Year","operationId":"export_search_results_v1_companies_export_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Include inactive/dissolved companies","default":false,"title":"Include Inactive"},"description":"Include inactive/dissolved companies"},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by industry code. Accepts multiple comma-separated codes, e.g. `561110,563000` (matches any of them).","title":"Industry"},"description":"Filter by industry code. Accepts multiple comma-separated codes, e.g. `561110,563000` (matches any of them)."},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by municipality code. Accepts multiple comma-separated codes, e.g. `101,147` (matches any of them).","title":"Municipality"},"description":"Filter by municipality code. Accepts multiple comma-separated codes, e.g. `101,147` (matches any of them)."},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Latitude for location-based search","title":"Lat"},"description":"Latitude for location-based search"},{"name":"lng","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude for location-based search","title":"Lng"},"description":"Longitude for location-based search"},{"name":"radius","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":50,"description":"Search radius in meters","default":2000,"title":"Radius"},"description":"Search radius in meters"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/legal-notices":{"get":{"tags":["Companies"],"summary":"/companies/legal-notices","description":"List recent legal notices from Statstidende, newest first.","operationId":"list_legal_notices_v1_companies_legal_notices_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by event type: financial_distress or corporate_announcement","title":"Event Type"},"description":"Filter by event type: financial_distress or corporate_announcement"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalNoticesPublicResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}","description":"Get full details for a company by CVR number.\n\nReturns company information including address, industry, employees, ownership,\nboard members, directors, and a financial summary.\n\n**Note:** CDS (CompanyData Score) is only included for Pro tier subscriptions.","operationId":"get_company_v1_companies__cvr__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/key-figures/export":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/key-figures/export","description":"Download a company's key figures for every financial year as an Excel\nworkbook (revenue, gross profit, profit/loss, equity, total assets,\nemployees), the same figures the company page and the regnskab pages show.\n\nFree-account gate: any logged-in user, Basic included. The figures are\npublic on the pages; the download is the reason to create an account, not\na data restriction.","operationId":"export_key_figures_excel_v1_companies__cvr__key_figures_export_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Column-header language: da or en","default":"da","title":"Lang"},"description":"Column-header language: da or en"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/financials":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/financials","description":"**Pro tier required.**\n\nGet financial statements for a company.\n\nReturns all available annual reports with key figures extracted from XBRL,\nsorted by period end date (newest first).","operationId":"get_company_financials_v1_companies__cvr__financials_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyFinancialsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/financials/{announcement_id}/pdf":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/financials/{announcement_id}/pdf","description":"Download PDF for a financial statement.\n\nProxies the PDF download from Virk to avoid exposing the direct URL.\nReturns the PDF file as a streaming response.","operationId":"download_financial_pdf_v1_companies__cvr__financials__announcement_id__pdf_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"announcement_id","in":"path","required":true,"schema":{"type":"string","title":"Announcement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/financials/{announcement_id}/xhtml":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/financials/{announcement_id}/xhtml","description":"Get XHTML (viewable annual report) for a financial statement.\n\nProxies the XHTML download from Virk. The XHTML is a styled, human-readable\nversion of the annual report that can be viewed in a browser.","operationId":"view_financial_xhtml_v1_companies__cvr__financials__announcement_id__xhtml_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"announcement_id","in":"path","required":true,"schema":{"type":"string","title":"Announcement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/timeline":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/timeline","description":"**Pro tier required.**\n\nGet timeline of corporate events for a company.\n\nReturns historical events including:\n- Company founding\n- Director changes (joined/left)\n- Board member changes (joined/left)\n- Ownership changes\n- Auditor changes\n- Status changes (bankruptcy, liquidation, etc.)\n\nEvents are sorted by date (newest first).","operationId":"get_company_timeline_endpoint_v1_companies__cvr__timeline_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyTimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/portfolio":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/portfolio","description":"**Pro tier required.**\n\nGet companies owned by this company.\n\nReturns all companies where this company is listed as an owner,\nsorted by ownership percentage (highest first).","operationId":"get_company_portfolio_v1_companies__cvr__portfolio_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyPortfolioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/tenders":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/tenders","description":"Public procurement tenders linked to this company.\n\nrole=won: award notices from TED and udbud.dk where the company appears\nas a winner (matched on CVR). role=buyer: tenders the company issued as\ncontracting authority (matched on exact registry name — the sources\ncarry no buyer CVR, so name variants may be missed). Most recent first.","operationId":"get_company_tenders_v1_companies__cvr__tenders_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"role","in":"query","required":false,"schema":{"type":"string","pattern":"^(won|buyer)$","description":"'won' = contracts the company won; 'buyer' = tenders the company issued","default":"won","title":"Role"},"description":"'won' = contracts the company won; 'buyer' = tenders the company issued"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of results","default":10,"title":"Limit"},"description":"Number of results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyTendersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/news":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/news","description":"News & press coverage matched to this company: press releases (Via\nRitzau) and media mentions (Danish news feeds), most recent first.\n\nThe 10 most recent items are public; paging beyond them (offset > 0 or\nlimit > 10) requires a Pro subscription.\n\nMedia mentions deliberately carry no summary text — only headline,\nsource, link and date (Danish press publishers' right, ophavsretsloven\n§ 69a). Press releases are distribution content and include the lead.","operationId":"get_company_news_v1_companies__cvr__news_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"description":"Number of results","default":10,"title":"Limit"},"description":"Number of results"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Skip results (Pro archive paging)","default":0,"title":"Offset"},"description":"Skip results (Pro archive paging)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyNewsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/koncern-graph":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/koncern-graph","description":"Get the corporate group (koncern) graph around a company.\n\nNodes are companies and person owners; edges point from owner to owned\nwith ownership/voting percentages. Traverses the ownership chain up to\n3 levels in both directions (owners and subsidiaries).\n\n`truncated` is `true` whenever the returned graph is incomplete for any\nreason: the depth limit (3 levels each way) cut off further owners or\nsubsidiaries, a single node had more than 25 owners/subsidiaries, or the\ngraph hit the 120-node cap. `truncated: false` means the full ownership\nstructure is included.","operationId":"get_koncern_graph_v1_companies__cvr__koncern_graph_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KoncernGraphResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/beneficial-owners":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/beneficial-owners","description":"Resolve the ultimate (beneficial) owners of a company.\n\nWalks the ownership chain upward through company owners, multiplying the\nownership stake along every path, and returns the ultimate person owners\nwith their effective percentage (summed across all paths). Where a chain\nends at a foreign entity (ANDEN_DELTAGER), a company we can't resolve\nfurther, or the depth limit, that owner is returned as a leaf with a\n`leaf_reason`.\n\nThis is the company-rooted counterpart to\n`/v1/participants/{unit_number}/indirect-ownership`, which is rooted on a\nperson and walks downward. Use this one to answer \"who really owns this\ncompany\" in a single call.","operationId":"get_company_beneficial_owners_v1_companies__cvr__beneficial_owners_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"max_depth","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"Maximum ownership levels to walk upward","default":5,"title":"Max Depth"},"description":"Maximum ownership levels to walk upward"},{"name":"min_percent","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"description":"Minimum effective ownership to include (0.01 = 1%)","default":0.01,"title":"Min Percent"},"description":"Minimum effective ownership to include (0.01 = 1%)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeneficialOwnersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/cds":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/cds","description":"Get the CDS (CompanyData Score) summary for a company.\n\nRequires a Pro subscription. This is the endpoint the frontend fetches\nclient-side after login so the score never appears in the publicly\ncached company page.","operationId":"get_company_cds_v1_companies__cvr__cds_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CDSSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/risk-signals":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/risk-signals","description":"**Pro tier required.**\n\nFinancial reporting conduct facts for a company, derived from its\nannual reports: filings after the statutory deadline (ÅRL § 138),\nan overdue current filing, missing fiscal years, auditor changes, and\nthe auditor's own latest opinion (qualified opinion, going concern).\n\nFacts only, no score. Signals consider the 5 most recent annual\nreports and are recomputed nightly. `available` is false for companies\nwithout financial statements (including sole proprietorships with no\nfiling duty).","operationId":"get_company_risk_signals_v1_companies__cvr__risk_signals_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/climate-risk":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/climate-risk","description":"Flood risk (DHM/Bluespot ekstremregn + DHM/Havvand paa land) aggregated\nover the company's actively owned properties. Assessments are computed on\nfirst request and cached per property, so the first call for a company\nwith many unassessed properties can take a few seconds.\n\nRequires a Pro subscription. Climate data itself is open geodata\n(Klimadatastyrelsen, CC BY 4.0) — the gate covers the aggregation onto a\ncompany's asset portfolio, same as the property list.","operationId":"get_company_climate_v1_companies__cvr__climate_risk_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyClimateRiskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/smiley":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/smiley","description":"Fødevarestyrelsen food inspection (smiley) results for the company's\nregistered establishments. Open data from findsmiley.dk; kontrolresultat\n1 = ingen anmærkninger, 2 = indskærpelse, 3 = påbud/forbud,\n4 = bødeforelæg, politianmeldelse eller autorisation frataget.\nOnly establishments present in the current findsmiley dump are returned.","operationId":"get_company_smiley_v1_companies__cvr__smiley_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySmileyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/livestock":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/livestock","description":"Livestock herds (husdyrbesætninger) registered to the company in CHR,\nDet Centrale Husdyrbrugsregister (Fødevarestyrelsen). Per herd: CHR\nnumber, species, usage, per-category herd sizes and organic status,\nplus the location of the CHR-nummer (address and, where the stald\ncoordinate resolves to a property in the matrikel register, its BFE\nnumber). Populated for active companies with an agriculture/fishery\nindustry code; refreshed continuously.","operationId":"get_company_livestock_v1_companies__cvr__livestock_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyLivestockResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/pep-screening":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/pep-screening","description":"Screen a company's people against Finanstilsynet's PEP lists.\n\nScreens current owners (persons), active board members and active\ndirectors by normalized name against the official Danish, Faroese and\nGreenlandic lists of politically exposed persons (hvidvasklovens § 18,\nstk. 7).\n\nCVR carries no birth dates for participants, so matching is name-based\nonly: every match is a *possible* match that must be verified manually.\n`confidence` is `name_exact` when all name parts match and `name_partial`\nwhen only first and last name match. Intended as KYC/AML decision\nsupport — you remain responsible for your own customer due diligence.","operationId":"get_company_pep_screening_v1_companies__cvr__pep_screening_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PepScreeningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/properties":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/properties","description":"Get real estate properties owned by this company.\n\nReturns property ownerships from EJF (Ejerfortegnelsen) linked by CVR number.\nIncludes BFE number, ownership shares, and effective dates.\n\nUse `status=active` (default) for current ownerships, `status=historic` for ended ownerships.","operationId":"get_company_properties_v1_companies__cvr__properties_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"Filter by status: 'active' or 'historic'","default":"active","title":"Status"},"description":"Filter by status: 'active' or 'historic'"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page (max 100)","default":50,"title":"Page Size"},"description":"Items per page (max 100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyPropertiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/production-units":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/production-units","description":"**Pro tier required.**\n\nGet production units (P-enheder) for a company.\n\nProduction units are physical business locations within a company.\nA company like 7-11 has one CVR but hundreds of P-enheder (store locations).","operationId":"get_company_production_units_v1_companies__cvr__production_units_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"include_dissolved","in":"query","required":false,"schema":{"type":"boolean","description":"Include dissolved P-enheder","default":false,"title":"Include Dissolved"},"description":"Include dissolved P-enheder"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Results per page","default":100,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionUnitListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/export":{"get":{"tags":["Companies","Companies"],"summary":"/companies/{cvr}/export","description":"Export company data to Excel workbook.\n\nReturns an Excel file (.xlsx) with multiple sheets:\n- **Oversigt** - Basic company information\n- **Regnskab** - Financial history\n- **Ejere** - Ownership structure\n- **Ledelse** - Directors and board members\n- **Ejendomme** - Property ownerships (if any)\n- **Historik** - Timeline of corporate events\n\nRequires Pro subscription.","operationId":"export_company_to_excel_v1_companies__cvr__export_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/similar":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/similar","description":"Find companies similar to the given company using geo-based search.\n\nReturns companies that are similar based on:\n- Same industry category (first 4 digits of industry code)\n- Geographic proximity (within radius, sorted by distance)\n- Falls back to municipality matching if no nearby companies found\n\nThis endpoint is useful for finding competitors or related businesses in the area.","operationId":"get_similar_companies_endpoint_v1_companies__cvr__similar_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"Maximum number of similar companies to return","default":5,"title":"Limit"},"description":"Maximum number of similar companies to return"},{"name":"radius","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":500,"description":"Search radius in meters (500m to 50km)","default":5000,"title":"Radius"},"description":"Search radius in meters (500m to 50km)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCompaniesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/stock-prices":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/stock-prices","description":"Daily share price candles for an OMX Copenhagen-listed company.\n\nOnly companies listed on Nasdaq Copenhagen have price data; all other\nCVRs return 404. Returns the primary (most traded) share class with up\nto 5 years of daily OHLCV candles, refreshed on trading days.","operationId":"get_stock_prices_v1_companies__cvr__stock_prices_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"range_days","in":"query","required":false,"schema":{"type":"integer","maximum":1900,"minimum":30,"description":"Number of trailing days of candles","default":365,"title":"Range Days"},"description":"Number of trailing days of candles"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockPricesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/summary":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/summary","description":"Get the AI-generated summary for a company.\n\nReturns a concise 2-3 sentence summary of the company's financial health and trajectory,\navailable in both Danish and English.\n\nSummaries are only available for \"interesting\" companies with meaningful financial data.","operationId":"get_company_summary_endpoint_v1_companies__cvr__summary_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/legal-notices":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/legal-notices","description":"Get legal notices from Statstidende linked to this CVR.","operationId":"get_company_legal_notices_v1_companies__cvr__legal_notices_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegalNoticesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/e-invoicing":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/e-invoicing","description":"Where and how the company receives electronic invoices.\n\nLists the company's EAN numbers and other Peppol endpoints with the\ndocument kinds and invoice formats each accepts (OIOUBL 2.1, Peppol BIS\nBilling 3.0 and others). Sourced daily from the Peppol Directory, which\ncovers the endpoints whose provider publishes a business card; a company\nthat is not listed may still receive invoices by other means. A region\nor large municipality has thousands of EAN numbers; page with limit and\noffset, or search them by name on /ean.","operationId":"get_company_e_invoicing_v1_companies__cvr__e_invoicing_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Also return endpoints that have left the Peppol Directory","default":false,"title":"Include Inactive"},"description":"Also return endpoints that have left the Peppol Directory"},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set to document_types to include the raw Peppol document type identifiers","title":"Include"},"description":"Set to document_types to include the raw Peppol document type identifiers"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyEInvoicingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{cvr}/retslister":{"get":{"tags":["Companies"],"summary":"/companies/{cvr}/retslister","description":"Court hearings (retslister) where the company appears as a party.\n\nSourced from the hearing lists Danmarks Domstole publish per court\n(civil, criminal and forced-auction lists). The source only keeps\nroughly the current month, so this is a snapshot of currently published\nhearings. Party names are matched to registered companies by exact\nnormalized name; private persons are never included.","operationId":"get_company_court_hearings_v1_companies__cvr__retslister_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCourtHearingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants":{"get":{"tags":["Participants"],"summary":"/participants","description":"**Pro tier required.**\n\nSearch participants by name.\n\nSearches individuals (persons) that appear in ownership or management roles.\nCompanies are not stored as participants — look them up by CVR via the\n/companies endpoints (e.g. /companies/{cvr}/beneficial-owners).","operationId":"search_participants_endpoint_v1_participants_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Search query (name)","title":"Q"},"description":"Search query (name)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page","default":25,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/count":{"get":{"tags":["Participants"],"summary":"/participants/count","description":"How many persons match a name query (capped at 100).\n\nNot Pro-gated on purpose: it returns a number only, so the search page\ncan label its \"Personer\" tab for every visitor while the persons\nthemselves stay behind the Pro-gated search. Hidden persons are excluded.","operationId":"count_participants_endpoint_v1_participants_count_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"description":"Name query","title":"Q"},"description":"Name query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/{unit_number}":{"get":{"tags":["Participants"],"summary":"/participants/{unit_number}","description":"**Pro tier required.**\n\nGet a participant by their CVR unit number.\n\nReturns participant details including all company relationships.","operationId":"get_participant_v1_participants__unit_number__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Unit Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/{unit_number}/preview":{"get":{"tags":["Participants"],"summary":"/participants/{unit_number}/preview","description":"Public lookup of a participant's name and type by unit_number.\n\nUsed by search-box autocomplete to confirm a pasted unit_number\nresolves to a real participant. Does not return portfolio or any\nrole data — those remain pro-gated via /portfolio.","operationId":"get_participant_preview_endpoint_v1_participants__unit_number__preview_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Unit Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/{unit_number}/portfolio":{"get":{"tags":["Participants"],"summary":"/participants/{unit_number}/portfolio","description":"**Pro tier required.**\n\nGet all companies a participant is involved with.\n\nReturns categorized lists of:\n- Ownership stakes\n- Board positions\n- Director positions\n- Other roles","operationId":"get_participant_portfolio_endpoint_v1_participants__unit_number__portfolio_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Unit Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantPortfolioResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/{unit_number}/network":{"get":{"tags":["Participants"],"summary":"/participants/{unit_number}/network","description":"Get a participant's network — people who held management/board roles\nat the same companies during overlapping time periods.\n\n- `limit=3` (default) returns a teaser (3 people + total count)\n- `limit=0` returns paginated results (use page and page_size)","operationId":"get_participant_network_endpoint_v1_participants__unit_number__network_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Unit Number"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Max people to return (0 = unlimited)","default":3,"title":"Limit"},"description":"Max people to return (0 = unlimited)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (only used when limit=0)","default":1,"title":"Page"},"description":"Page number (only used when limit=0)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page (only used when limit=0)","default":25,"title":"Page Size"},"description":"Results per page (only used when limit=0)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/{unit_number}/path/{other_unit_number}":{"get":{"tags":["Participants"],"summary":"/participants/{unit_number}/path/{other_unit_number}","description":"Netværkssøgning: find the shortest relation path between two persons.\n\nPersons are connected through companies where they hold (or held)\nmanagement/board roles or registered ownership. Searches up to 3 degrees\n(companies on the path) and returns up to 8 parallel shortest paths as a\nnodes/edges graph plus the node-id sequence of each path.\n\n- `degrees=1`: the two persons share a company\n- `degrees=2`: connected through one intermediate person\n- `degrees=3`: connected through two intermediate persons\n- `path_found=false`: no connection within 3 degrees","operationId":"get_network_path_endpoint_v1_participants__unit_number__path__other_unit_number__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Unit Number"}},{"name":"other_unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Other Unit Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/participants/{unit_number}/indirect-ownership":{"get":{"tags":["Participants"],"summary":"/participants/{unit_number}/indirect-ownership","description":"**Pro tier required.**\n\nGet indirect ownership for a participant.\n\nComputes ownership through chains of company ownership. For example:\n- If Person A owns 50% of Company X\n- And Company X owns 100% of Company Y\n- Then Person A indirectly owns 50% of Company Y\n\nReturns indirect_ownership with effective percentages and ownership paths.","operationId":"get_participant_indirect_ownership_endpoint_v1_participants__unit_number__indirect_ownership_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"unit_number","in":"path","required":true,"schema":{"type":"integer","title":"Unit Number"}},{"name":"max_depth","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"description":"Maximum depth to traverse ownership chains","default":3,"title":"Max Depth"},"description":"Maximum depth to traverse ownership chains"},{"name":"min_percent","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"description":"Minimum effective ownership percentage to include","default":0.01,"title":"Min Percent"},"description":"Minimum effective ownership percentage to include"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account":{"get":{"tags":["Account"],"summary":"/account","description":"Get information about the current API key.","operationId":"get_account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/account/usage":{"get":{"tags":["Account"],"summary":"/account/usage","description":"Get usage statistics for the current API key.\n\n`requests_this_month` is this key's own count. The monthly limit is\nenforced on the organisation's pooled counter, so `requests_remaining`\nis computed from that live counter plus the org's unspent credits;\nwithout the credits a client at the plan limit would read 0 while\nhundreds of paid requests sit unused.","operationId":"get_usage_v1_account_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__account__UsageResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/municipalities":{"get":{"tags":["Reference Data"],"summary":"/municipalities","description":"List all Danish municipalities.\n\nOptionally filter by region code. Results are sorted alphabetically by name.\n\n**Region codes:**\n- 1081: Region Nordjylland\n- 1082: Region Midtjylland\n- 1083: Region Syddanmark\n- 1084: Region Hovedstaden\n- 1085: Region Sjælland","operationId":"list_municipalities_v1_municipalities_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"region_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by region code","title":"Region Code"},"description":"Filter by region code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__reference__MunicipalityListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/municipalities/{code}":{"get":{"tags":["Reference Data"],"summary":"/municipalities/{code}","description":"Get a single municipality by code.","operationId":"get_municipality_v1_municipalities__code__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Municipality"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regions":{"get":{"tags":["Reference Data"],"summary":"/regions","description":"List all Danish regions.\n\nDenmark has 5 regions. Results are sorted alphabetically by name.","operationId":"list_regions_v1_regions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionListResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/industries":{"get":{"tags":["Reference Data"],"summary":"/industries","description":"List industries with company counts.\n\nReturns industries sorted by total count (most common first).\nUse locale=en for English translations.","operationId":"list_industries_v1_industries_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search filter for industry name","title":"Q"},"description":"Search filter for industry name"},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by exact industry code","title":"Code"},"description":"Filter by exact industry code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"description":"Max results to return","default":50,"title":"Limit"},"description":"Max results to return"},{"name":"locale","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Locale for industry names (da/en)","default":"da","title":"Locale"},"description":"Locale for industry names (da/en)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__reference__IndustryListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/industries/translations":{"get":{"tags":["Reference Data"],"summary":"/industries/translations","description":"Get all industry code translations for client-side caching.\n\nReturns a dictionary mapping industry codes to their Danish and English names.\nResponse is cacheable for 24 hours.","operationId":"get_industry_translations_v1_industries_translations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndustryTranslationsResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/postal-codes":{"get":{"tags":["Reference Data"],"summary":"/postal-codes","description":"List all Danish postal codes, sorted numerically by postal code.\n\n`municipality_code` filters to postal codes observed in that\nmunicipality (registered company addresses; postal codes that straddle\nmunicipal borders appear for every municipality they touch).","operationId":"list_postal_codes_v1_postal_codes_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"municipality_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by municipality code","title":"Municipality Code"},"description":"Filter by municipality code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__reference__PostalCodeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/kuratorer":{"get":{"tags":["Reference Data"],"summary":"/kuratorer","description":"**Pro tier required.**\n\nDirectory of kuratorer (bankruptcy trustees): appointments published in\nStatstidende konkursdekret notices within the last 12 months, grouped by\ntrustee name. Professional-capacity data as published in Statstidende.\n\nNames are grouped as published; the same person may appear under name\nvariants.","operationId":"list_kuratorer_v1_kuratorer_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"description":"Name search (case-insensitive substring)","title":"Q"},"description":"Name search (case-insensitive substring)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KuratorDirectoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/postal-codes/{code}":{"get":{"tags":["Reference Data"],"summary":"/postal-codes/{code}","description":"Get a single postal code with company count.","operationId":"get_postal_code_v1_postal_codes__code__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostalCode"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ean/{ean}":{"get":{"tags":["E-invoicing"],"summary":"/ean/{ean}","description":"Look up an EAN number (GLN location number) used for electronic invoicing.\n\nReturns who receives documents on that EAN, the CVR number behind it,\nwhich document kinds and invoice formats it accepts (OIOUBL, Peppol BIS\nBilling 3.0 and others), and the company as we hold it. Endpoints that\nhave left the Peppol Directory are still returned with `active: false`.","operationId":"lookup_ean_v1_ean__ean__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"ean","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{8,14}$","description":"EAN (GLN) number, usually 13 digits","examples":["5798000416604"],"title":"Ean"},"description":"EAN (GLN) number, usually 13 digits"},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set to document_types to include the raw Peppol document type identifiers","title":"Include"},"description":"Set to document_types to include the raw Peppol document type identifiers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EanLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ean":{"get":{"tags":["E-invoicing"],"summary":"/ean","description":"Find EAN numbers and other e-invoicing endpoints by CVR number or name.\n\nA municipality or a large company often has hundreds of EAN numbers, one\nper department or location; the name on each card tells them apart.\nEAN endpoints come first, then CVR endpoints.","operationId":"search_ean_v1_ean_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"All endpoints of this CVR number","examples":["29189854"],"title":"Cvr"},"description":"All endpoints of this CVR number"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":100},{"type":"null"}],"description":"Part of the name on the business card","examples":["Københavns Kommune"],"title":"Name"},"description":"Part of the name on the business card"},{"name":"active","in":"query","required":false,"schema":{"type":"boolean","description":"Only endpoints currently in the Peppol Directory","default":true,"title":"Active"},"description":"Only endpoints currently in the Peppol Directory"},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set to document_types to include the raw Peppol document type identifiers","title":"Include"},"description":"Set to document_types to include the raw Peppol document type identifiers"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EanSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/legal-notices":{"get":{"tags":["Legal notices"],"summary":"/legal-notices","description":"Statstidende notices about companies: bankruptcy decrees, creditor\nmeetings, reconstruction, forced auctions, liquidation and forced\ndissolution, general meetings, capital changes and merger plans.\n\nEvery notice carries the rubrik, the companies named, the trustee\n(kurator), court and case number where published, whether a decree was\nlater revoked, and a one-line summary. History goes back to March 2026.\n\n**Browse** with filters and limit/offset: newest publication first, with\na total. **Poll** with `since` once and then `cursor=next_cursor`: every\nnotice indexed after the cursor, oldest first, exactly once. New notices\narrive each morning after Statstidende publishes.\n\nSole proprietorships (ENK), personally owned small businesses (PMV) and\npartnerships (I/S) are not in the feed, because their debtor is a person.\nPer company, use /companies/{cvr}/legal-notices. For push delivery on the\ncompanies you follow, subscribe a webhook to financial_distress and\ncorporate_announcement.\n\nPro and Team.","operationId":"list_legal_notice_feed_v1_legal_notices_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}],"description":"Publication date from (YYYY-MM-DD)","title":"Date From"},"description":"Publication date from (YYYY-MM-DD)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}],"description":"Publication date to (YYYY-MM-DD)","title":"Date To"},"description":"Publication date to (YYYY-MM-DD)"},{"name":"cvr","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{8}$"},{"type":"null"}],"description":"Only notices naming this CVR number","title":"Cvr"},"description":"Only notices naming this CVR number"},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"financial_distress or corporate_announcement","title":"Event Type"},"description":"financial_distress or corporate_announcement"},{"name":"section","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Statstidende section, e.g. Konkursboer, Rekonstruktion, Tvangsauktioner","title":"Section"},"description":"Statstidende section, e.g. Konkursboer, Rekonstruktion, Tvangsauktioner"},{"name":"rubrik","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Rubrik keys from /legal-notices/rubrikker (repeatable)","title":"Rubrik"},"description":"Rubrik keys from /legal-notices/rubrikker (repeatable)"},{"name":"municipality_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{1,4}$"},{"type":"null"}],"description":"Company municipality code","title":"Municipality Code"},"description":"Company municipality code"},{"name":"division","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{2}$"},{"type":"null"}],"description":"2-digit industry division","title":"Division"},"description":"2-digit industry division"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"next_cursor from the previous page: returns the notices indexed after it, oldest first","title":"Cursor"},"description":"next_cursor from the previous page: returns the notices indexed after it, oldest first"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start polling from this time (ISO 8601): notices indexed after it, oldest first","title":"Since"},"description":"Start polling from this time (ISO 8601): notices indexed after it, oldest first"},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set to fields to include the structured fields of each notice","title":"Include"},"description":"Set to fields to include the structured fields of each notice"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Only when browsing (no cursor or since)","default":0,"title":"Offset"},"description":"Only when browsing (no cursor or since)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoticeFeedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/legal-notices/rubrikker":{"get":{"tags":["Legal notices"],"summary":"/legal-notices/rubrikker","description":"The Statstidende rubrikker the feed covers, with section, Danish and English name and event type.","operationId":"list_rubrikker_v1_legal_notices_rubrikker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RubrikCatalogResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/legal-notices/{message_number}":{"get":{"tags":["Legal notices"],"summary":"/legal-notices/{message_number}","description":"One notice with all its structured fields as published. Pro and Team.","operationId":"get_legal_notice_v1_legal_notices__message_number__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"message_number","in":"path","required":true,"schema":{"type":"string","title":"Message Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedNotice"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/production-units":{"get":{"tags":["Production Units"],"summary":"/production-units","description":"**Pro tier required.**\n\nSearch production units with filters.\n\n**Examples:**\n- Search by P-number: `/v1/production-units?q=1234567890`\n- Filter by municipality: `/v1/production-units?municipality=101`\n- Filter by industry: `/v1/production-units?industry=47.11`","operationId":"search_v1_production_units_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query (P-number or name)","title":"Q"},"description":"Search query (P-number or name)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"include_dissolved","in":"query","required":false,"schema":{"type":"boolean","description":"Include dissolved P-enheder","default":false,"title":"Include Dissolved"},"description":"Include dissolved P-enheder"},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by industry code","title":"Industry"},"description":"Filter by industry code"},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by municipality code","title":"Municipality"},"description":"Filter by municipality code"},{"name":"postal_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by postal code","title":"Postal Code"},"description":"Filter by postal code"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page","default":25,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionUnitSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/production-units/nearby":{"get":{"tags":["Production Units"],"summary":"/production-units/nearby","description":"**Pro tier required.**\n\nSearch production units near a location.\n\nReturns P-enheder within the specified radius, sorted by distance.\nThis is useful for finding all business locations (stores, offices, etc.)\nnear a geographic point.\n\n**Example:** Find all stores within 5km of Copenhagen:\n`/v1/production-units/nearby?lat=55.6761&lng=12.5683&radius=5000`","operationId":"search_nearby_v1_production_units_nearby_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude of center point","title":"Lat"},"description":"Latitude of center point"},{"name":"lng","in":"query","required":true,"schema":{"type":"number","description":"Longitude of center point","title":"Lng"},"description":"Longitude of center point"},{"name":"radius","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":50,"description":"Search radius in meters (min 50m, max 50km)","default":1000,"title":"Radius"},"description":"Search radius in meters (min 50m, max 50km)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (active, dissolved)","title":"Status"},"description":"Filter by status (active, dissolved)"},{"name":"include_dissolved","in":"query","required":false,"schema":{"type":"boolean","description":"Include dissolved P-enheder","default":false,"title":"Include Dissolved"},"description":"Include dissolved P-enheder"},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by industry code","title":"Industry"},"description":"Filter by industry code"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page","default":25,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionUnitSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/production-units/stats":{"get":{"tags":["Production Units"],"summary":"/production-units/stats","description":"**Pro tier required.**\n\nGet statistics about production units in the database.","operationId":"stats_v1_production_units_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]}]}},"/v1/production-units/{p_number}":{"get":{"tags":["Production Units"],"summary":"/production-units/{p_number}","description":"**Pro tier required.**\n\nGet a production unit by P-number.\n\nP-numbers are 10-digit identifiers for physical business locations.","operationId":"get_production_unit_v1_production_units__p_number__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"p_number","in":"path","required":true,"schema":{"type":"string","title":"P Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductionUnitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/lookup":{"get":{"tags":["Properties"],"summary":"/properties/lookup","description":"Find the BFE number(s) of a property from an address, a DAWA id, a\ncadastral number or a coordinate. Give exactly one of: `address`,\n`adresse_id`, `adgangsadresse_id`, `ejerlavkode` + `matrikelnr`, or\n`lat` + `lon`.\n\nEach result says how it relates to the input: `parcel` is the property\nthe land belongs to, `unit` an ejerlejlighed at the address. A building\nof flats returns its parcel first, then the flats. Fetch the details with\n`/v1/properties/{bfe_number}`.","operationId":"lookup_properties_v1_properties_lookup_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Free-text address, e.g. 'Clemensgade 8, 2. th, 6000 Kolding'. With floor or door it resolves the flat, without them the building and its flats.","title":"Address"},"description":"Free-text address, e.g. 'Clemensgade 8, 2. th, 6000 Kolding'. With floor or door it resolves the flat, without them the building and its flats."},{"name":"adresse_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DAR/DAWA adresse id (a unit address)","title":"Adresse Id"},"description":"DAR/DAWA adresse id (a unit address)"},{"name":"adgangsadresse_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DAR husnummer / DAWA adgangsadresse id","title":"Adgangsadresse Id"},"description":"DAR husnummer / DAWA adgangsadresse id"},{"name":"ejerlavkode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ejerlav code, together with matrikelnr","title":"Ejerlavkode"},"description":"Ejerlav code, together with matrikelnr"},{"name":"matrikelnr","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Matrikelnummer, together with ejerlavkode","title":"Matrikelnr"},"description":"Matrikelnummer, together with ejerlavkode"},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":58.0,"minimum":54.0},{"type":"null"}],"description":"Latitude (WGS84), together with lon","title":"Lat"},"description":"Latitude (WGS84), together with lon"},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":15.5,"minimum":7.5},{"type":"null"}],"description":"Longitude (WGS84), together with lat","title":"Lon"},"description":"Longitude (WGS84), together with lat"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/{bfe_number}":{"get":{"tags":["Properties"],"summary":"/properties/{bfe_number}","description":"Get full property details by BFE number.\n\nWith `include` the energy label, flood risk, planning status and public\nvaluation come in the same response, so one call covers what otherwise\ntakes five. A section is null when there is no data for the property.\n\nWhen `withheld` is true the owner's objection was granted: the response\ngives the property's number, type, address and parcels only, and the\ndetail sections answer 451.","operationId":"get_property_v1_properties__bfe_number__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"bfe_number","in":"path","required":true,"schema":{"type":"integer","title":"Bfe Number"}},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated extra sections in the same response: energy_label, climate, planning, valuation, or all","title":"Include"},"description":"Comma-separated extra sections in the same response: energy_label, climate, planning, valuation, or all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/{bfe_number}/buildings":{"get":{"tags":["Properties"],"summary":"/properties/{bfe_number}/buildings","description":"GeoDanmark building footprints (bygningspolygoner) for a property.\n\nReturns the building polygons (WGS84 GeoJSON) whose centroid falls on\nthe property's cadastral parcels. Fetched from GeoDanmark on first\nrequest and cached; footprints change rarely.","operationId":"get_property_buildings_v1_properties__bfe_number__buildings_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"bfe_number","in":"path","required":true,"schema":{"type":"integer","title":"Bfe Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyBuildingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/{bfe_number}/climate":{"get":{"tags":["Properties"],"summary":"/properties/{bfe_number}/climate","description":"Flood risk assessment for a property, based on Klimadatastyrelsen's\nDHM/Bluespot (ekstremregn) and DHM/Havvand paa land models evaluated at\nthe property's coordinates. Assessed on first request and cached.","operationId":"get_property_climate_v1_properties__bfe_number__climate_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"bfe_number","in":"path","required":true,"schema":{"type":"integer","title":"Bfe Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClimateRiskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/{bfe_number}/energy-label":{"get":{"tags":["Properties"],"summary":"/properties/{bfe_number}/energy-label","description":"Energy labels (energimærker) for a property from Energistyrelsen's\nEMOData service. Looked up on first request and cached; refreshed\nnightly from EMOData's changelog. `classification` is the current\nheadline label; `labels` includes expired labels for history.","operationId":"get_property_energy_labels_v1_properties__bfe_number__energy_label_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"bfe_number","in":"path","required":true,"schema":{"type":"integer","title":"Bfe Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyEnergyLabelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/{bfe_number}/planning":{"get":{"tags":["Properties"],"summary":"/properties/{bfe_number}/planning","description":"Planning status (planforhold) for a property from Plandata.dk: zone\nstatus, adopted local plans, local plan proposals and municipal plan\nframeworks covering the property's coordinate. Assessed on first request\nand cached; re-assessed periodically.","operationId":"get_property_planning_status_v1_properties__bfe_number__planning_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"bfe_number","in":"path","required":true,"schema":{"type":"integer","title":"Bfe Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyPlanningResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/properties/{bfe_number}/valuation":{"get":{"tags":["Properties"],"summary":"/properties/{bfe_number}/valuation","description":"Public property valuations (offentlige ejendomsvurderinger) from\nVurderingsstyrelsen: ejendomsværdi, grundværdi, vurderet areal and\njuridisk kategori per year, newest first.\n\n- `history` and `latest`: final valuations from the register via\n  Datafordeler (the old system to 2020, and new-system valuations of homes\n  as they become final). Synced nightly. Licensed CC BY 4.0.\n- `preliminary`: the current preliminary valuations (foreløbige\n  vurderinger) from Vurderingsstyrelsen's published files: homes 2022 and\n  2024, business and agricultural land values 2023 and 2025. Checked for\n  new releases daily.\n\nA property with only preliminary valuations answers with `latest: null`.","operationId":"get_property_valuations_v1_properties__bfe_number__valuation_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"bfe_number","in":"path","required":true,"schema":{"type":"integer","title":"Bfe Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyValuationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/screen":{"post":{"tags":["Screening"],"summary":"/screen","description":"**Pro tier required.**\n\nScreen the company register on structured criteria: industry, geography,\ncompany type, size and financial key figures from the latest annual\nreport. All given filters are combined with AND; results are paginated\nwith an opaque cursor.\n\nExample: companies in Region Midtjylland with an equity ratio below 15%\nand at least 5 employees:\n\n```json\n{\n  \"filters\": {\n    \"region_codes\": [\"1082\"],\n    \"employees\": {\"min\": 5},\n    \"financials\": {\"equity_ratio\": {\"max\": 0.15}}\n  },\n  \"sort\": {\"field\": \"equity_ratio\", \"direction\": \"asc\"},\n  \"limit\": 50\n}\n```\n\n**Data notes:**\n\n- Financial criteria use the company's most recent annual report. Most\n  small companies (reporting class B) do not publish revenue, only gross\n  profit; filtering on `revenue` therefore excludes them. Each result\n  includes `financials.reporting_class` and `financials.period_end` so\n  you can judge coverage and freshness.\n- **Metric coverage** (active companies with the metric, August 2026 —\n  about 41% of the ~860,000 active companies file annual reports at all;\n  the rest are mainly sole proprietorships with no filing duty):\n\n  | Metric | Active companies |\n  |---|---|\n  | `profit_loss`, `equity`, `total_assets` | ~353,000 (41%) |\n  | `equity_ratio` | ~348,000 (40%) |\n  | `gross_profit` | ~338,000 (39%) |\n  | `current_ratio` | ~329,000 (38%) |\n  | `return_on_equity` | ~299,000 (35%) |\n  | `operating_profit` | ~278,000 (32%) |\n  | `employees` | ~257,000 (30%) |\n  | `revenue` | ~24,000 (2.7%) |\n\n  For \"small companies\" screens, `gross_profit` and `employees` reach\n  the broad register; `revenue` reaches only the minority obliged to\n  disclose it (reporting classes C/D).\n- Amounts are DKK. Ratios are fractions: `equity_ratio` 0.15 means a\n  soliditetsgrad of 15%. Figures are as filed; occasional filing errors\n  can produce extreme ratio values.\n- A company only matches a financial filter if its latest report contains\n  that metric. Sorting by a metric likewise only returns companies where\n  the metric is present.\n- Growth metrics (`revenue_growth`, `gross_profit_growth`,\n  `equity_growth`) are year-over-year fractions computed from the\n  report's own comparative figures: -0.2 means a 20% decline. Absent\n  when the base year is missing or zero.\n- `cds_score` (0-100) and `cds_ratings` filter on the CDS (CompanyData\n  Score). Only companies with a computed score match these filters.\n- Each result carries `location` (`lat`/`lng`, WGS84) for the registered\n  address, so a result set can be plotted or trimmed by area without a\n  second lookup. It is absent when the address could not be geocoded or\n  is withheld.\n\nUse `POST /v1/screen/count` with the same filters to size a segment\nbefore pulling pages.","operationId":"screen_companies_v1_screen_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/count":{"post":{"tags":["Screening"],"summary":"/screen/count","description":"**Pro tier required.**\n\nCount the companies matching a set of screening filters without\nretrieving them. Takes the same `filters` object as `POST /v1/screen`.\n\nPass the optional `sort` to count only companies where the sort field\nis present — the same restriction a sorted `/screen` listing applies,\nso the two numbers agree.","operationId":"screen_companies_count_v1_screen_count_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenCountRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenCountResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/aggregate":{"post":{"tags":["Screening"],"summary":"/screen/aggregate","description":"**Pro tier required.**\n\nGroup the companies matching a set of screening filters by a dimension\n(industry, municipality, company type, reporting class or CDS rating)\nand get per-group counts, optionally with sums and averages of up to 3\nkey figures.\n\nGroups are sorted by company count and capped at 100\n(`meta.truncated` is true when more groups exist). Keys are codes;\nresolve display names via `/v1/industries` and `/v1/municipalities`.","operationId":"screen_aggregate_v1_screen_aggregate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenAggregateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenAggregateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/properties":{"post":{"tags":["Screening"],"summary":"/screen/properties","description":"**Pro tier required.**\n\nProperty-first screening: find company-owned properties by building and\nlocation attributes, with the owning companies attached.\n\nExample: large buildings with elevated flood exposure in two\nmunicipalities, excluding advertising-protected owners:\n\n```json\n{\n  \"filters\": {\n    \"municipality_codes\": [\"751\", \"727\"],\n    \"building_area\": {\"min\": 200},\n    \"has_flood_risk\": true,\n    \"exclude_advertising_protected\": true\n  }\n}\n```\n\n**Scope**: results are exclusively properties with at least one active\ncompany ownership registered in Ejerfortegnelsen; the owning companies\n(CVR and name) are attached to each property. Set\n`exclude_advertising_protected` when the results are used for direct\nmarketing (CVR-loven).\n\nFlood exposure and energy labels are indicative, based on\nKlimadatastyrelsen's open elevation models and Energistyrelsen's EMO\nregister. Results are ordered by BFE number; page with `meta.next_cursor`.","operationId":"screen_properties_v1_screen_properties_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/export":{"post":{"tags":["Screening"],"summary":"/screen/export","description":"Export every company matching a set of screening filters to an Excel\nfile, delivered by email (the same asynchronous pipeline as lead lists\nand CVR-list enrichment, including its field catalog).\n\nWeb flow only: requires a logged-in Pro/Team user (the file is\ndelivered to the account's email address). API integrators can build\nthe same by paging `/v1/screen` and posting the CVRs to\n`/v1/enrichments`.\n\nWith `fields.financial_history` set, the download is a ZIP holding the\nmain file plus a financial-history file in long format: one row per\ncompany per fiscal year, every year on record, with the selected\nfinancial/ratio columns as reported in the annual filings.\n\nLimits: at most 25,000 matching companies per export.","operationId":"export_screen_v1_screen_export_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenExportRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/exports":{"get":{"tags":["Screening"],"summary":"/screen/exports","description":"List the current user's screening exports, newest first — the status/\nhistory surface behind /virksomhedsscreening/eksporter (the sibling of\n/leadlister for lead lists and /berigelse for enrichment jobs).\n\nWeb flow only, Pro-gated like the export itself.","operationId":"list_screen_exports_v1_screen_exports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ScreenExportStatusResponse"},"type":"array","title":"Response List Screen Exports V1 Screen Exports Get"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/saved":{"get":{"tags":["Screening"],"summary":"/screen/saved list","description":"**Pro tier required.**\n\nList the organization's saved screens.","operationId":"list_saved_screens_v1_screen_saved_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedScreenListResponse"}}}}},"security":[{"BearerAuth":[]}]},"post":{"tags":["Screening"],"summary":"/screen/saved","description":"**Pro tier required.**\n\nSave a screening query. Without a `webhook_id` this is an instant\nbookmark of the named filters, with no match-size limit. With a\n`webhook_id` the screen is monitored: the current match set is\nsnapshotted immediately and re-evaluated daily, and companies that\nstart or stop matching produce `screen_entered` / `screen_left`\nwebhook events (one event per company, same payload shape and signing\nas all other webhook events).\n\nLimits: an organization can hold 25 saved screens, and a MONITORED\nscreen must match at most 25,000 companies. The initial snapshot emits\nno events, and neither does editing the filters (the snapshot\nre-baselines).","operationId":"create_saved_screen_v1_screen_saved_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedScreenCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/screen/saved/{screen_id}":{"get":{"tags":["Screening"],"summary":"/screen/saved/{id}","description":"**Pro tier required.**\n\nGet one saved screen, including its latest evaluation state.","operationId":"get_saved_screen_v1_screen_saved__screen_id__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"screen_id","in":"path","required":true,"schema":{"type":"string","title":"Screen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Screening"],"summary":"/screen/saved/{id} update","description":"**Pro tier required.**\n\nUpdate a saved screen. Changing `filters` re-baselines the match\nsnapshot without emitting events. Set `clear_webhook` to detach the\nwebhook; set `active` to false to pause evaluation.","operationId":"update_saved_screen_v1_screen_saved__screen_id__patch","security":[{"BearerAuth":[]}],"parameters":[{"name":"screen_id","in":"path","required":true,"schema":{"type":"string","title":"Screen Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedScreenUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Screening"],"summary":"/screen/saved/{id} delete","description":"**Pro tier required.**\n\nDelete a saved screen and its notification routing.","operationId":"delete_saved_screen_v1_screen_saved__screen_id__delete","security":[{"BearerAuth":[]}],"parameters":[{"name":"screen_id","in":"path","required":true,"schema":{"type":"string","title":"Screen Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auditors/{cvr}":{"get":{"tags":["Auditors"],"summary":"/auditors/{cvr}","description":"**Pro tier required.**\n\nPortfolio profile for an audit firm: active client count, top client\nindustries (DB07 divisions), and factual counts of clients' financial\nreporting conduct (late filings, going concern, overdue filings) drawn\nfrom the clients' own published annual reports.\n\nCounts are facts about the client portfolio, not an assessment of the\naudit firm. Resolve division names via `/v1/industries`.","operationId":"auditor_profile_v1_auditors__cvr__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditorProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auditors/{cvr}/clients":{"get":{"tags":["Auditors"],"summary":"/auditors/{cvr}/clients","description":"**Pro tier required.**\n\nActive clients of an audit firm (companies whose current registered\nauditor is this firm), ordered by CVR with cursor pagination.","operationId":"auditor_clients_v1_auditors__cvr__clients_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cvr","in":"path","required":true,"schema":{"type":"string","title":"Cvr"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CVR cursor from meta.next_cursor","title":"Cursor"},"description":"CVR cursor from meta.next_cursor"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditorClientsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/working-lists":{"get":{"tags":["Working Lists"],"summary":"/working-lists","operationId":"list_working_records_v1_working_lists_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by pipeline status","title":"Status"},"description":"Filter by pipeline status"},{"name":"due","in":"query","required":false,"schema":{"type":"boolean","description":"Only records with a due/overdue follow-up","default":false,"title":"Due"},"description":"Only records with a due/overdue follow-up"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"description":"Maximum records returned","default":2000,"title":"Limit"},"description":"Maximum records returned"},{"name":"owner","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by assigned owner email","title":"Owner"},"description":"Filter by assigned owner email"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company name","title":"Q"},"description":"Filter by company name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Working Lists"],"summary":"/working-lists","operationId":"create_working_record_v1_working_lists_post","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRecordRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/working-lists/due":{"get":{"tags":["Working Lists"],"summary":"/working-lists/due","description":"Dashboard badge counts (open records + due follow-ups).","operationId":"working_list_due_v1_working_lists_due_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"BearerAuth":[]}]}},"/v1/working-lists/bulk":{"post":{"tags":["Working Lists"],"summary":"/working-lists/bulk","description":"Create records for many CVRs at once (from a lead list or paste).","operationId":"bulk_create_working_records_v1_working_lists_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCreateResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/working-lists/{record_id}":{"get":{"tags":["Working Lists"],"summary":"/working-lists/{record_id}","operationId":"get_working_record_v1_working_lists__record_id__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Working Lists"],"summary":"/working-lists/{record_id}","operationId":"update_working_record_v1_working_lists__record_id__patch","security":[{"BearerAuth":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRecordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Working Lists"],"summary":"/working-lists/{record_id}","operationId":"delete_working_record_v1_working_lists__record_id__delete","security":[{"BearerAuth":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/working-lists/{record_id}/activities":{"post":{"tags":["Working Lists"],"summary":"/working-lists/{record_id}/activities","operationId":"add_working_activity_v1_working_lists__record_id__activities_post","security":[{"BearerAuth":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateActivityRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/working-lists/{record_id}/activities/{activity_id}/complete":{"post":{"tags":["Working Lists"],"summary":"/working-lists/{record_id}/activities/{activity_id}/complete","description":"Mark a follow-up done; recurring follow-ups spawn their next occurrence.","operationId":"complete_working_followup_v1_working_lists__record_id__activities__activity_id__complete_post","security":[{"BearerAuth":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}},{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","title":"Activity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleRecordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/event-types":{"get":{"tags":["Webhooks"],"summary":"/webhooks/event-types","description":"List all notification event types that can appear in webhook payloads and\nbe used in `event_types` arrays on webhooks and CVR filters.\n\nEach entry includes the identifier (`value`), Danish and English labels,\nand a description of what change in the underlying CVR data triggers it.\n\nOpen to any API key — no Pro subscription required.","operationId":"list_event_types_v1_webhooks_event_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EventTypeInfo"},"type":"array","title":"Response List Event Types V1 Webhooks Event Types Get"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"/webhooks","description":"List all webhooks owned by the calling API key.\n\n`meta.max_webhooks` shows your subscription tier's webhook limit.\nSecrets are not returned — they are only available at creation time.","operationId":"list_webhooks_v1_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksListResponse"}}}}},"security":[{"BearerAuth":[]}]},"post":{"tags":["Webhooks"],"summary":"/webhooks","description":"Register a new webhook endpoint.\n\nThe `url` must be HTTPS and respond `2xx` within 10 seconds. After creation, set\nthe list of CVRs to monitor with `PUT /v1/webhooks/{webhook_id}/cvr-filter` to start\nreceiving events.\n\n**The `secret` field in the response is only returned here.** Store it now — it is\nused to verify the HMAC signature on every incoming delivery and cannot be retrieved later.\nA new secret can only be obtained by deleting and re-creating the webhook.\n\nReturns `403` if you have reached your subscription tier's webhook limit.","operationId":"create_new_webhook_v1_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookWithSecret"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/webhooks/{webhook_id}":{"get":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}","description":"Get the current configuration and health of a single webhook.\n\nUse `consecutive_failures` and `disabled_reason` to monitor delivery health.","operationId":"get_webhook_details_v1_webhooks__webhook_id__get","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}","description":"Update a webhook's configuration. Only the fields you provide are changed.\n\nSetting `active: true` on an auto-disabled webhook re-enables it and resets the\nconsecutive-failure counter — fix the underlying issue first or it will be\nauto-disabled again.\n\nThe signing secret cannot be rotated through this endpoint; delete and re-create\nthe webhook if you need a new secret.","operationId":"update_webhook_settings_v1_webhooks__webhook_id__put","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}","description":"Permanently delete a webhook. Delivery stops immediately and any pending\nretries are dropped. Any watch-list entries that targeted this webhook\nare removed too — there's no point in keeping routing rules pointing at\na vanished URL.","operationId":"remove_webhook_v1_webhooks__webhook_id__delete","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{webhook_id}/test":{"post":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}/test","description":"Send a synthetic test event to the webhook URL. Useful for verifying your\nendpoint accepts the payload and signature before going live.\n\nThe test payload uses `event_type=company_status` with CVR `00000000` and\ncompany name `Test Company ApS`. It is signed with your webhook secret exactly\nlike a real event, and will count toward `consecutive_failures` if your endpoint\nrejects it.","operationId":"send_test_webhook_v1_webhooks__webhook_id__test_post","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{webhook_id}/deliveries":{"get":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}/deliveries","description":"List delivery attempts for this webhook, newest first.\n\nEach entry includes the HTTP status code returned by your endpoint, an error\nmessage if delivery failed, and timestamps. Use this to diagnose missed events\nor repeated failures. Pending entries are still being attempted (up to 3 tries).","operationId":"get_webhook_deliveries_v1_webhooks__webhook_id__deliveries_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of deliveries to return per page. Maximum 100.","default":50,"title":"Limit"},"description":"Number of deliveries to return per page. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of deliveries to skip. Use with `limit` for pagination.","default":0,"title":"Offset"},"description":"Number of deliveries to skip. Use with `limit` for pagination."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveriesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{webhook_id}/cvr-filter":{"put":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}/cvr-filter","description":"Replace the list of CVRs that this webhook monitors (idempotent).\n\nOnce set, the webhook receives every change event for any CVR in the list, for\nthe chosen event types. To sync your portfolio, send the full current list each\ntime — the new list completely replaces the previous one.\n\n**Validation**\n- Each CVR must be exactly 8 numeric digits.\n- Maximum 50,000 CVRs per webhook.\n- Duplicates are silently de-duplicated.\n- Pass an empty `cvrs` array to keep the filter present but match nothing.\n- Omit `event_types` (or pass `null`) to subscribe to all event types.\n\nUnknown CVRs are accepted silently — you simply receive no events for them.\nThis makes it safe to send a list that may include companies that don't exist\nyet or have been deleted.\n\nReturns `400` for invalid CVRs or count above the cap, `404` if the webhook\ndoes not exist or is not owned by you.","operationId":"replace_cvr_filter_v1_webhooks__webhook_id__cvr_filter_put","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetCvrFilterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CvrFilterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}/cvr-filter","description":"Read the current bulk CVR filter on a webhook.\n\nReturns `404` if no filter is set on this webhook. CVRs are returned in the\norder they were originally registered (after de-duplication).","operationId":"read_cvr_filter_v1_webhooks__webhook_id__cvr_filter_get","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CvrFilterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhooks"],"summary":"/webhooks/{webhook_id}/cvr-filter","description":"Remove the CVR list from a webhook. The webhook itself is unchanged —\nit simply stops receiving events until a new list is set.","operationId":"remove_cvr_filter_v1_webhooks__webhook_id__cvr_filter_delete","security":[{"BearerAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","title":"Webhook Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cvrapi/api":{"get":{"tags":["cvrapi.dk compatibility"],"summary":"/cvrapi/api","description":"Look up one Danish company in cvrapi.dk's version 6 format.\n\nA drop-in replacement for `https://cvrapi.dk/api`: change the base URL to\n`https://api.companydata.dk/cvrapi/api` and keep your parameters.\n\n**Parameters** (query string, or form fields on POST):\n- `vat`: CVR number. `produ`: P-number (answers with the production unit\n  in the company shape). `phone`: phone number. `name`: best match for\n  a company name, active companies first. `search`: a CVR number,\n  P-number or name. One is used, in that order.\n- `country`: `dk` (the default; only Danish companies are served).\n- `format`: `json` (default) or `xml`. `callback`: JSONP function name.\n- `token`: a companydata.dk API key (`sk_...`), also accepted as\n  `Authorization: Bearer`.\n\n**Access:** everyone gets 50 lookups a day (per IP without a key, per\naccount with one). A companydata.dk API key adds its monthly API quota\non top: a free account 1,000 a month, Pro 300,000.\n\n**Errors** keep cvrapi.dk's shape, e.g. HTTP 404\n`{\"error\":\"NOT_FOUND\",\"t\":0,\"version\":6}`. Codes: NOT_FOUND,\nQUOTA_EXCEEDED (429), INVALID_VAT, NO_SEARCH, UNSUPPORTED_COUNTRY (400),\nINVALID_TOKEN (401).","operationId":"cvrapi_lookup_cvrapi_api_get","responses":{"200":{"description":"The company in cvrapi.dk's version 6 format","content":{"application/json":{},"application/xml":{},"application/javascript":{}}},"404":{"description":"Not found: {\"error\":\"NOT_FOUND\",\"t\":0,\"version\":6}"},"429":{"description":"QUOTA_EXCEEDED: keyless ceiling or the key's quota reached"}},"security":[{"BearerAuth":[]}]},"post":{"tags":["cvrapi.dk compatibility"],"summary":"/cvrapi/api","description":"Look up one Danish company in cvrapi.dk's version 6 format.\n\nA drop-in replacement for `https://cvrapi.dk/api`: change the base URL to\n`https://api.companydata.dk/cvrapi/api` and keep your parameters.\n\n**Parameters** (query string, or form fields on POST):\n- `vat`: CVR number. `produ`: P-number (answers with the production unit\n  in the company shape). `phone`: phone number. `name`: best match for\n  a company name, active companies first. `search`: a CVR number,\n  P-number or name. One is used, in that order.\n- `country`: `dk` (the default; only Danish companies are served).\n- `format`: `json` (default) or `xml`. `callback`: JSONP function name.\n- `token`: a companydata.dk API key (`sk_...`), also accepted as\n  `Authorization: Bearer`.\n\n**Access:** everyone gets 50 lookups a day (per IP without a key, per\naccount with one). A companydata.dk API key adds its monthly API quota\non top: a free account 1,000 a month, Pro 300,000.\n\n**Errors** keep cvrapi.dk's shape, e.g. HTTP 404\n`{\"error\":\"NOT_FOUND\",\"t\":0,\"version\":6}`. Codes: NOT_FOUND,\nQUOTA_EXCEEDED (429), INVALID_VAT, NO_SEARCH, UNSUPPORTED_COUNTRY (400),\nINVALID_TOKEN (401).","operationId":"cvrapi_lookup_cvrapi_api_get","responses":{"200":{"description":"The company in cvrapi.dk's version 6 format","content":{"application/json":{},"application/xml":{},"application/javascript":{}}},"404":{"description":"Not found: {\"error\":\"NOT_FOUND\",\"t\":0,\"version\":6}"},"429":{"description":"QUOTA_EXCEEDED: keyless ceiling or the key's quota reached"}},"security":[{"BearerAuth":[]}]}}},"components":{"schemas":{"AccountInfo":{"properties":{"key_prefix":{"type":"string","title":"Key Prefix","description":"First characters of the API key"},"name":{"type":"string","title":"Name","description":"API key name"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions","description":"Granted permissions"},"rate_limit":{"additionalProperties":true,"type":"object","title":"Rate Limit","description":"Rate limit configuration"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the API key was created"}},"type":"object","required":["key_prefix","name","permissions","rate_limit","created_at"],"title":"AccountInfo"},"AccountResponse":{"properties":{"data":{"$ref":"#/components/schemas/AccountInfo","description":"Account information"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data"],"title":"AccountResponse"},"Activity":{"properties":{"_id":{"type":"string","title":"Id"},"record_id":{"type":"string","title":"Record Id"},"kind":{"type":"string","enum":["note","call","followup","status_change","system","company_event"],"title":"Kind"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"system_event":{"anyOf":[{"type":"string","enum":["created","assigned","unassigned"]},{"type":"null"}],"title":"System Event"},"system_param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Param"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"summary_da":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Da"},"summary_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary En"},"old_status":{"anyOf":[{"type":"string","enum":["ny","kontaktet","dialog","vundet","tabt"]},{"type":"null"}],"title":"Old Status"},"new_status":{"anyOf":[{"type":"string","enum":["ny","kontaktet","dialog","vundet","tabt"]},{"type":"null"}],"title":"New Status"},"followup":{"anyOf":[{"$ref":"#/components/schemas/ActivityFollowup"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"}},"type":"object","required":["_id","record_id","kind","created_at"],"title":"Activity"},"ActivityFollowup":{"properties":{"due_at":{"type":"string","format":"date-time","title":"Due At"},"recurrence":{"type":"string","enum":["none","weekly","monthly","quarterly","yearly"],"title":"Recurrence","default":"none"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["due_at"],"title":"ActivityFollowup"},"AggregateBucket":{"properties":{"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"Group key (code); null groups companies missing the dimension"},"count":{"type":"integer","title":"Count"},"metrics":{"additionalProperties":{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"object"},"type":"object","title":"Metrics","description":"Per requested metric: {\"sum\": ..., \"avg\": ...}"}},"type":"object","required":["count"],"title":"AggregateBucket"},"AggregateDimension":{"type":"string","enum":["industry","industry_division","municipality","company_type","reporting_class","cds_rating"],"title":"AggregateDimension","description":"Grouping dimensions for POST /v1/screen/aggregate."},"AuditInfo":{"properties":{"audit_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audit Type","description":"Type of assurance","examples":["audit","review","compilation","extended_review"]},"opinion_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opinion Type","description":"Auditor's opinion type","examples":["unqualified","qualified","adverse","disclaimer"]},"has_going_concern":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Going Concern","description":"Whether report contains going concern paragraph"},"has_emphasis_of_matter":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Emphasis Of Matter","description":"Whether report contains emphasis of matter"},"auditor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auditor Name","description":"Name of signing auditor"},"audit_firm_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audit Firm Name","description":"Name of audit firm"},"audit_firm_cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audit Firm Cvr","description":"CVR number of audit firm"},"audit_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Audit Date","description":"Date of auditor's report"},"auditor_mne_numbers":{"items":{"type":"string"},"type":"array","title":"Auditor Mne Numbers","description":"MNE numbers of the signing auditors, normalized (e.g. 'mne24819')"}},"type":"object","title":"AuditInfo","description":"Audit-related information from the annual report."},"AuditorClient":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"type":"string","title":"Name"},"industry_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Code"},"industry_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Text"},"municipality_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Name"}},"type":"object","required":["cvr","name"],"title":"AuditorClient"},"AuditorClientsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AuditorClient"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","required":["data","meta"],"title":"AuditorClientsResponse"},"AuditorIndustryBucket":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"DB07 division (2-digit)"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["count"],"title":"AuditorIndustryBucket"},"AuditorProfile":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Audit firm name"},"client_count":{"type":"integer","title":"Client Count","description":"Active companies with this firm as registered auditor"},"industries":{"items":{"$ref":"#/components/schemas/AuditorIndustryBucket"},"type":"array","title":"Industries","description":"Top client industries (DB07 divisions)"},"clients_with_signals":{"type":"integer","title":"Clients With Signals","description":"Clients with computed financial reporting signals","default":0},"clients_late_filings":{"type":"integer","title":"Clients Late Filings","description":"Clients with at least one late filing among their last 5 annual reports","default":0},"clients_going_concern":{"type":"integer","title":"Clients Going Concern","description":"Clients whose latest report carries a going concern emphasis","default":0},"clients_overdue_filing":{"type":"integer","title":"Clients Overdue Filing","description":"Active clients whose next expected report is past its statutory deadline","default":0}},"type":"object","required":["cvr","client_count"],"title":"AuditorProfile","description":"Audit firm profile: portfolio facts derived from CVR registrations\nand clients' published annual reports. Factual counts only."},"AutocompleteResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AutocompleteResult"},"type":"array","title":"Data","description":"Autocomplete results"}},"type":"object","required":["data"],"title":"AutocompleteResponse"},"AutocompleteResult":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"CVR number"},"name":{"type":"string","title":"Name","description":"Company name"},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type","description":"Company type"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Company logo URL if available"},"matched_name":{"anyOf":[{"$ref":"#/components/schemas/MatchedName"},{"type":"null"}],"description":"The binavn that matched `q` when the current name does not contain it"}},"type":"object","required":["cvr","name"],"title":"AutocompleteResult"},"BalanceSheet":{"properties":{"total_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Assets","description":"Total assets (aktiver i alt)"},"noncurrent_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Noncurrent Assets","description":"Non-current assets (anlægsaktiver)"},"current_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Assets","description":"Current assets (omsætningsaktiver)"},"cash":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cash","description":"Cash and cash equivalents (likvide beholdninger)"},"inventories":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Inventories","description":"Inventories (varebeholdninger)"},"receivables":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Receivables","description":"Total receivables (tilgodehavender)"},"intangible_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Intangible Assets","description":"Intangible assets (immaterielle anlægsaktiver)"},"property_plant_equipment":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Property Plant Equipment","description":"Property, plant & equipment (materielle anlægsaktiver)"},"investment_property":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Investment Property","description":"Investment property (investeringsejendomme)"},"goodwill":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Goodwill","description":"Goodwill"},"other_fixtures_equipment":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Other Fixtures Equipment","description":"Other fixtures, fittings, tools and equipment (driftsmateriel og inventar)"},"investments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Investments","description":"Investments in subsidiaries/associates"},"trade_receivables":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trade Receivables","description":"Trade receivables (varetilgodehavender)"},"receivables_from_group":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Receivables From Group","description":"Receivables from group companies"},"right_of_use_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Right Of Use Assets","description":"Right-of-use assets (IFRS 16 leases)"},"equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Equity","description":"Shareholder equity (egenkapital)"},"contributed_capital":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contributed Capital","description":"Share capital (selskabskapital)"},"retained_earnings":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retained Earnings","description":"Retained earnings (overført resultat)"},"total_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Liabilities","description":"Total liabilities (gældsforpligtelser)"},"longterm_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Longterm Liabilities","description":"Long-term liabilities (langfristede gældsforpligtelser)"},"shortterm_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shortterm Liabilities","description":"Short-term liabilities (kortfristede gældsforpligtelser)"},"provisions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Provisions","description":"Provisions (hensættelser)"},"deferred_tax":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deferred Tax","description":"Deferred tax liabilities"},"trade_payables":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trade Payables","description":"Trade payables (varekreditorer)"},"payables_to_group":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payables To Group","description":"Payables to group companies"},"bank_loans":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bank Loans","description":"Bank loans and mortgage debt"},"lease_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lease Liabilities","description":"Lease liabilities (IFRS 16)"}},"type":"object","title":"BalanceSheet","description":"Key figures from the balance sheet (balance). All amounts in DKK."},"BeneficialOwner":{"properties":{"unit_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Number","description":"enhedsNummer of the ultimate owner (null for an unresolved company leaf)"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR, set only when the chain ends at a company we can't resolve further"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"PERSON | ANDEN_DELTAGER | VIRKSOMHED"},"is_person":{"type":"boolean","title":"Is Person","description":"True for an ultimate individual owner","default":false},"effective_ownership_percent":{"type":"number","title":"Effective Ownership Percent","description":"Effective stake summed across all paths (0.5 = 50%)"},"leaf_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leaf Reason","description":"Why the chain ends here: person_or_other | no_further_owners | max_depth | cycle"},"paths":{"items":{"items":{"$ref":"#/components/schemas/BeneficialOwnerPathStep"},"type":"array"},"type":"array","title":"Paths","description":"Ownership paths from the company up to this owner"}},"type":"object","required":["effective_ownership_percent"],"title":"BeneficialOwner"},"BeneficialOwnerPathStep":{"properties":{"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr"},"unit_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"ownership_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ownership Percent"}},"type":"object","title":"BeneficialOwnerPathStep"},"BeneficialOwnersResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"beneficial_owners":{"items":{"$ref":"#/components/schemas/BeneficialOwner"},"type":"array","title":"Beneficial Owners"},"max_depth_used":{"type":"integer","title":"Max Depth Used"},"truncated":{"type":"boolean","title":"Truncated","default":false}},"type":"object","required":["cvr","beneficial_owners","max_depth_used"],"title":"BeneficialOwnersResponse"},"BuildingInfo":{"properties":{"usage_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usage Code"},"year_built":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year Built"},"year_renovated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year Renovated"},"total_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Area"},"residential_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Residential Area"},"commercial_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commercial Area"},"floors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Floors"},"heating_installation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heating Installation"},"heating_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heating Source"},"wall_material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wall Material"},"roof_material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roof Material"}},"type":"object","title":"BuildingInfo","description":"Building data from BBR enrichment."},"BuildingPolygon":{"properties":{"geometry":{"$ref":"#/components/schemas/GeoPolygon"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"GeoDanmark building status","examples":["Anlagt"]}},"type":"object","required":["geometry"],"title":"BuildingPolygon","description":"A GeoDanmark building footprint on the property's parcels."},"BulkCreateRequest":{"properties":{"cvrs":{"items":{"type":"string"},"type":"array","maxItems":2000,"minItems":1,"title":"Cvrs"},"source":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Source"}},"type":"object","required":["cvrs"],"title":"BulkCreateRequest"},"BulkCreateResult":{"properties":{"created":{"type":"integer","title":"Created"},"already_present":{"type":"integer","title":"Already Present"},"not_found":{"items":{"type":"string"},"type":"array","title":"Not Found","default":[]},"invalid":{"items":{"type":"string"},"type":"array","title":"Invalid","default":[]}},"type":"object","required":["created","already_present"],"title":"BulkCreateResult"},"BundleProperty":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"}},"type":"object","required":["bfe_number"],"title":"BundleProperty","description":"A sibling property in the same transaction bundle."},"CDSPillar":{"properties":{"key":{"type":"string","title":"Key","description":"Pillar key","examples":["financial_position","earnings","conduct_filings","stability","insider_track_record"]},"score":{"type":"number","title":"Score","description":"Points earned on this pillar"},"max":{"type":"number","title":"Max","description":"Maximum points available on this pillar for this company"}},"type":"object","required":["key","score","max"],"title":"CDSPillar","description":"Coarse pillar score. Only pillars applicable to the company appear\n(structurally absent data classes are renormalized away, not zero-filled).\nSub-factor detail is deliberately not exposed (methodology: public surfaces\nshow the coarse pillar breakdown only)."},"CDSSummary":{"properties":{"score":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":-1.0},{"type":"null"}],"title":"Score","description":"Score from 0-100 (higher is better). -1 = a score exists but is not published yet"},"rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rating","description":"Rating category","examples":["excellent","good","moderate","high_risk","critical"]},"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence","description":"How much data the score rests on: high = recent accounts, audit and ownership data on file; low = mostly registry data","examples":["high","medium","low"]},"credit_recommendation":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Credit Recommendation","description":"Trade-credit recommendation: status (recommended/zero_advised/no_recommendation), limit_dkk, payment_terms_days (0 = prepayment), basis, reason"},"has_score":{"type":"boolean","title":"Has Score","description":"Whether a score has been calculated for this company","default":false},"not_scored_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not Scored Reason","description":"Machine-readable reason when no score is disclosed. 'company_dissolved' = the company has ceased; no credit assessment is made or disclosed for dissolved companies."},"calculated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Calculated At","description":"When the score was last calculated"},"pillars":{"anyOf":[{"items":{"$ref":"#/components/schemas/CDSPillar"},"type":"array"},{"type":"null"}],"title":"Pillars","description":"Coarse per-pillar breakdown (only on the dedicated /companies/{cvr}/cds endpoint)"}},"type":"object","title":"CDSSummary","description":"CDS (CompanyData Score) - proprietary credit/health score for companies."},"CashFlowStatement":{"properties":{"operating_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Operating Cash Flow","description":"Cash flow from operating activities"},"investing_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Investing Cash Flow","description":"Cash flow from investing activities"},"financing_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Financing Cash Flow","description":"Cash flow from financing activities"},"net_cash_change":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Net Cash Change","description":"Net increase/decrease in cash"},"capex":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Capex","description":"Capital expenditures (purchase of PP&E)"},"dividends_paid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dividends Paid","description":"Dividends paid to shareholders"}},"type":"object","title":"CashFlowStatement","description":"Key figures from the cash flow statement (pengestrømsopgørelse). All amounts in DKK."},"ClimateRiskResponse":{"properties":{"version":{"type":"integer","title":"Version"},"bluespot_at_point":{"type":"boolean","title":"Bluespot At Point"},"bluespot_fill_mm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bluespot Fill Mm"},"bluespot_share_10m":{"type":"number","title":"Bluespot Share 10M","default":0.0},"havvand_flood_level_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Havvand Flood Level M"},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At"}},"type":"object","required":["version","bluespot_at_point"],"title":"ClimateRiskResponse","description":"Flood risk assessment for a property (DHM bluespot + havvand paa land)."},"Company":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"8-digit CVR number (unique company identifier)","examples":["12345678"]},"name":{"type":"string","title":"Name","description":"Official company name"},"name_valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Name Valid From","description":"Date when current name became valid"},"name_history":{"items":{"$ref":"#/components/schemas/NameHistoryEntry"},"type":"array","title":"Name History","description":"Full name history with validity periods"},"secondary_names":{"items":{"type":"string"},"type":"array","title":"Secondary Names","description":"Alternative/trade names (binavne)"},"status":{"type":"string","title":"Status","description":"Company status","default":"active","examples":["active","dissolved","under_bankruptcy","liquidation"]},"cvr_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr Status","description":"Raw CVR status (sammensatStatus) behind `status`, which says how a company ended or what proceeding it is in","examples":["NORMAL","OPLØSTEFTERKONKURS","TVANGSOPLØST","UNDERKONKURS"]},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type","description":"Short company type code","examples":["A/S","ApS","IVS","K/S","I/S","ENK"]},"company_type_long":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type Long","description":"Full company type description","examples":["Aktieselskab","Anpartsselskab"]},"company_type_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Company Type Code","description":"CVR company form code (virksomhedsformkode)","examples":[80,60,10]},"registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Number","description":"Registration number (if different from CVR)"},"founded_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Founded Date","description":"Date company was founded/registered"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date","description":"Date company started operations"},"ceased_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ceased Date","description":"Date company ceased operations (ophørsdato)"},"lifecycle":{"items":{"$ref":"#/components/schemas/LifecyclePeriod"},"type":"array","title":"Lifecycle","description":"Periods in which the company existed (CVR livsforloeb), oldest first. A company that ceased and was reopened under the same CVR number has several"},"reopened_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reopened Date","description":"Date the company was last reopened under the same CVR number after it had ceased (start of its latest life period); null when it has run continuously since founded_date"},"bankruptcy_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Bankruptcy Date","description":"Date the probate court declared the company bankrupt (start of its latest UNDER KONKURS status in CVR); also set after the company was dissolved after the bankruptcy"},"address":{"anyOf":[{"$ref":"#/components/schemas/CompanyAddress"},{"type":"null"}],"description":"Registered company address"},"contact":{"anyOf":[{"$ref":"#/components/schemas/CvrContact"},{"type":"null"}],"description":"Contact information (phone, email, website)"},"claimed_contact":{"anyOf":[{"$ref":"#/components/schemas/CompanyContact"},{"type":"null"}],"description":"Contact information provided by the verified owner of the claimed company profile — takes display precedence over the CVR-registered `contact`"},"industry":{"anyOf":[{"$ref":"#/components/schemas/CompanyIndustry"},{"type":"null"}],"description":"Industry classification (DB07 codes)"},"employees":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"Current employee count from CVR: the latest monthly headcount (month and year given), else the last yearly figure"},"employees_monthly":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"Latest monthly headcount from CVR (payroll-based, the series CVR still updates)"},"employees_yearly":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"CVR's yearly employment series, which ends with 2018"},"capital":{"anyOf":[{"$ref":"#/components/schemas/CompanyCapital"},{"type":"null"}],"description":"Registered share capital"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose","description":"Company purpose/objective from articles of association"},"participants":{"items":{"$ref":"#/components/schemas/CompanyParticipant"},"type":"array","title":"Participants","description":"Basic participant list (legacy)"},"owners":{"items":{"$ref":"#/components/schemas/CompanyOwner"},"type":"array","title":"Owners","description":"Current owners with ownership percentages"},"board_members":{"items":{"$ref":"#/components/schemas/CompanyBoardMember"},"type":"array","title":"Board Members","description":"Board of directors (bestyrelse)"},"directors":{"items":{"$ref":"#/components/schemas/CompanyDirector"},"type":"array","title":"Directors","description":"Executive management (direktion)"},"founders":{"items":{"$ref":"#/components/schemas/CompanyFounder"},"type":"array","title":"Founders","description":"Company founders (stiftere)"},"p_units":{"items":{"type":"string"},"type":"array","title":"P Units","description":"List of P-unit numbers (production units)"},"advertising_protected":{"type":"boolean","title":"Advertising Protected","description":"Whether company is protected from advertising (reklamebeskyttet)","default":false},"location":{"anyOf":[{"$ref":"#/components/schemas/app__models__company__GeoLocation"},{"type":"null"}],"description":"Geocoded coordinates from DAWA"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Company logo URL if available"},"stock_listing":{"anyOf":[{"$ref":"#/components/schemas/StockListing"},{"type":"null"}],"description":"Present when the company is listed on Nasdaq Copenhagen (primary share class)"},"property_summary":{"anyOf":[{"$ref":"#/components/schemas/PropertySummary"},{"type":"null"}],"description":"Aggregated property ownership summary"},"contact_enrichment":{"anyOf":[{"$ref":"#/components/schemas/ContactEnrichmentSummary"},{"type":"null"}],"description":"Availability summary for enriched contact data (counts shown to all; values gated to Pro)"},"noindex":{"type":"boolean","title":"Noindex","description":"True when the company profile page should not be indexed by search engines","default":false},"meta":{"$ref":"#/components/schemas/CompanyMeta","description":"Record metadata"}},"type":"object","required":["cvr","name"],"title":"Company","description":"Full company details from the Danish CVR registry."},"CompanyAddress":{"properties":{"address_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Id","description":"DAWA adgangsadresse ID for direct geocoding lookup"},"street_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Name","description":"Street name (vejnavn)"},"street_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Street Code","description":"Street code, unique per municipality (vejkode)"},"house_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"House Number","description":"House number (husnummerFra)"},"house_number_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"House Number To","description":"House number end for address ranges"},"house_letter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House Letter","description":"Letter suffix, e.g. 'A', 'B'"},"house_letter_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House Letter To","description":"Letter suffix end for ranges"},"floor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor","description":"Floor (etage), e.g. 'st', '1', '2'"},"door":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Door","description":"Door identifier: 'th' (right), 'tv' (left), 'mf' (middle)"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code","description":"4-digit Danish postal code","examples":["1000","2100"]},"postal_district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal District","description":"Postal district name","examples":["København K","Aarhus C"]},"town_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Town Name","description":"Town name for rural areas (bynavn)"},"care_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Care Of","description":"c/o name if applicable"},"po_box":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Po Box","description":"P.O. box number"},"free_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Free Text","description":"Free text address (typically for foreign addresses)"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"ISO 3166-1 alpha-2 country code","default":"DK"},"municipality_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Code","description":"3-digit Danish municipality code","examples":["101","751"]},"municipality_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Name","description":"Municipality name","examples":["København","Aarhus"]},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street","description":"Formatted street address for display","examples":["Rådhuspladsen 1"]},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name (same as postal_district)"}},"type":"object","title":"CompanyAddress","description":"Danish address with all CVR fields preserved for accurate geocoding."},"CompanyAgeInsight":{"properties":{"category":{"type":"string","title":"Category","description":"Age category: new, established, well_established"},"years":{"type":"integer","title":"Years","description":"Company age in years"}},"type":"object","required":["category","years"],"title":"CompanyAgeInsight","description":"Company age insight based on founding date."},"CompanyBoardMember":{"properties":{"unit_number":{"type":"integer","title":"Unit Number","description":"CVR unit number for lookups"},"name":{"type":"string","title":"Name","description":"Board member name"},"type":{"type":"string","title":"Type","description":"Type: PERSON or VIRKSOMHED"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR number if board member is a company"},"function":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Function","description":"Board function","examples":["Bestyrelsesformand","Bestyrelsesmedlem","Næstformand"]},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"Same as function (for compatibility)"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date when board membership started"},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"Date when board membership ended (null = current)"}},"type":"object","required":["unit_number","name","type"],"title":"CompanyBoardMember","description":"Board member (bestyrelse) information."},"CompanyCapital":{"properties":{"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount","description":"Share capital amount","examples":[500000]},"currency":{"type":"string","title":"Currency","description":"Currency code (typically DKK)","default":"DKK"}},"type":"object","title":"CompanyCapital","description":"Registered share capital."},"CompanyClimateRiskResponse":{"properties":{"total_properties":{"type":"integer","title":"Total Properties"},"assessed_properties":{"type":"integer","title":"Assessed Properties"},"bluespot_count":{"type":"integer","title":"Bluespot Count"},"havvand_count":{"type":"integer","title":"Havvand Count"},"properties":{"items":{"$ref":"#/components/schemas/PropertyClimateSummary"},"type":"array","title":"Properties"}},"type":"object","required":["total_properties","assessed_properties","bluespot_count","havvand_count","properties"],"title":"CompanyClimateRiskResponse","description":"Flood risk aggregated over a company's actively owned properties."},"CompanyContact":{"properties":{"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Phone number","examples":["+45 12345678"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email address"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Website URL"}},"type":"object","title":"CompanyContact","description":"Company contact information."},"CompanyCourtHearingsResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"total":{"type":"integer","title":"Total"},"hearings":{"items":{"$ref":"#/components/schemas/CourtHearingItem"},"type":"array","title":"Hearings"},"note":{"type":"string","title":"Note"}},"type":"object","required":["cvr","total","hearings","note"],"title":"CompanyCourtHearingsResponse"},"CompanyDirector":{"properties":{"unit_number":{"type":"integer","title":"Unit Number","description":"CVR unit number for lookups"},"name":{"type":"string","title":"Name","description":"Director name"},"type":{"type":"string","title":"Type","description":"Type: PERSON or VIRKSOMHED"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR number if director is a company"},"function":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Function","description":"Director function","examples":["Direktør","Administrerende direktør"]},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"Same as function (for compatibility)"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date when directorship started"},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"Date when directorship ended (null = current)"}},"type":"object","required":["unit_number","name","type"],"title":"CompanyDirector","description":"Director/management (direktion) information."},"CompanyEInvoicingResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"can_receive_invoice":{"type":"boolean","title":"Can Receive Invoice","description":"True when at least one active endpoint accepts invoices"},"ean_count":{"type":"integer","title":"Ean Count","description":"Active EAN numbers that accept invoices"},"invoice_formats":{"items":{"type":"string"},"type":"array","title":"Invoice Formats","description":"Invoice formats accepted by at least one active endpoint"},"total":{"type":"integer","title":"Total","description":"Endpoints matching the filter, across all pages"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"endpoints":{"items":{"$ref":"#/components/schemas/EInvoicingEndpoint"},"type":"array","title":"Endpoints","description":"One page: active first, EAN endpoints before CVR endpoints, then by name"},"source":{"type":"string","title":"Source","description":"Data source, refreshed daily","default":"Peppol Directory"}},"type":"object","required":["cvr","can_receive_invoice","ean_count","total","limit","offset","endpoints"],"title":"CompanyEInvoicingResponse"},"CompanyEmployees":{"properties":{"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count","description":"Exact employee count (if available)","examples":[25]},"interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interval","description":"Employee count interval","examples":["10-19","20-49","50-99"]},"full_time_equivalent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Full Time Equivalent","description":"Full-time equivalent (FTE) count"},"including_owners":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Including Owners","description":"Employee count including owners"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Year the employee data was reported","examples":[2024]},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month","description":"Month of the figure (monthly series only)","examples":[7]}},"type":"object","title":"CompanyEmployees","description":"Employee count information from CVR."},"CompanyFinancialsResponse":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"CVR number of the company","examples":["12345678"]},"statements":{"items":{"$ref":"#/components/schemas/FinancialStatement"},"type":"array","title":"Statements","description":"Full financial statements, newest first"},"summary":{"items":{"$ref":"#/components/schemas/FinancialSummary"},"type":"array","title":"Summary","description":"Quick overview of key figures per year"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["cvr","statements","summary"],"title":"CompanyFinancialsResponse","description":"Response for company financial history endpoint."},"CompanyFounder":{"properties":{"unit_number":{"type":"integer","title":"Unit Number","description":"CVR unit number for lookups"},"name":{"type":"string","title":"Name","description":"Founder name"},"type":{"type":"string","title":"Type","description":"Type: PERSON or VIRKSOMHED"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR number if founder is a company"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date of company founding"}},"type":"object","required":["unit_number","name","type"],"title":"CompanyFounder","description":"Company founder information."},"CompanyIndustry":{"properties":{"primary_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Code","description":"Primary 6-digit industry code (DB07)","examples":["620100"]},"primary_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Text","description":"Primary industry description","examples":["Computerprogrammering"]},"secondary":{"items":{"$ref":"#/components/schemas/SecondaryIndustry"},"type":"array","title":"Secondary","description":"List of secondary industry codes"}},"type":"object","title":"CompanyIndustry","description":"Industry classification using Danish DB07 codes."},"CompanyInsights":{"properties":{"revenue_trend":{"anyOf":[{"$ref":"#/components/schemas/RevenueTrendInsight"},{"type":"null"}],"description":"Revenue trend insight"},"size":{"anyOf":[{"$ref":"#/components/schemas/CompanySizeInsight"},{"type":"null"}],"description":"Company size insight"},"age":{"anyOf":[{"$ref":"#/components/schemas/CompanyAgeInsight"},{"type":"null"}],"description":"Company age insight; null for a company that has ceased"},"profitability":{"anyOf":[{"$ref":"#/components/schemas/ProfitabilityInsight"},{"type":"null"}],"description":"Profitability insight"}},"type":"object","title":"CompanyInsights","description":"All computed insights for a company."},"CompanyLivestockResponse":{"properties":{"total":{"type":"integer","title":"Total"},"total_animals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Animals"},"species":{"items":{"type":"string"},"type":"array","title":"Species","default":[]},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At"},"herds":{"items":{"$ref":"#/components/schemas/LivestockHerd"},"type":"array","title":"Herds","default":[]}},"type":"object","required":["total"],"title":"CompanyLivestockResponse"},"CompanyMeta":{"properties":{"cvr_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cvr Updated At","description":"When company data was last synced from CVR"},"geocoded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Geocoded At","description":"When address was geocoded to coordinates"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When record was created in Selskabsbasen"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When record was last updated"}},"type":"object","title":"CompanyMeta","description":"Metadata about the company record."},"CompanyNewsResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/NewsItem"},"type":"array","title":"Items"}},"type":"object","required":["cvr","total","items"],"title":"CompanyNewsResponse"},"CompanyOwner":{"properties":{"unit_number":{"type":"integer","title":"Unit Number","description":"CVR unit number for owner lookups"},"name":{"type":"string","title":"Name","description":"Owner name (person or company)"},"type":{"type":"string","title":"Type","description":"Owner type: PERSON or VIRKSOMHED"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR number if owner is a company"},"ownership_percent":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Ownership Percent","description":"Ownership percentage (0.05 = 5%, 1.0 = 100%)"},"voting_percent":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Voting Percent","description":"Voting rights percentage (0.05 = 5%, 1.0 = 100%)"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date when ownership started"}},"type":"object","required":["unit_number","name","type"],"title":"CompanyOwner","description":"Owner with ownership stake information."},"CompanyParticipant":{"properties":{"name":{"type":"string","title":"Name","description":"Full name of the participant"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Participant type","examples":["PERSON","VIRKSOMHED"]},"unit_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Number","description":"CVR unit number for participant lookups"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"Role category","examples":["DIREKTION","BESTYRELSE"]},"function":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Function","description":"Specific function/title","examples":["Direktør","Bestyrelsesformand"]},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date when this role started"},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"Date when this role ended (null = current)"},"last_ownership_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Ownership Percent","description":"Stake held when an ownership (EJERREGISTER) ended"},"last_voting_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Voting Percent","description":"Voting rights held when an ownership ended"}},"type":"object","required":["name"],"title":"CompanyParticipant","description":"Basic participant info embedded in company record."},"CompanyPortfolioResponse":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"CVR number of the owning company"},"owned_companies":{"items":{"$ref":"#/components/schemas/OwnedCompany"},"type":"array","title":"Owned Companies","description":"Companies with ownership stakes"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["cvr"],"title":"CompanyPortfolioResponse","description":"Response for companies owned by a company (investment portfolio)."},"CompanyPropertiesResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"properties":{"items":{"$ref":"#/components/schemas/PropertyOwnershipResponse"},"type":"array","title":"Properties"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":50},"pages":{"type":"integer","title":"Pages","default":1},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","required":["cvr","properties","total"],"title":"CompanyPropertiesResponse","description":"Response model for GET /companies/{cvr}/properties."},"CompanyRef":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["cvr"],"title":"CompanyRef"},"CompanyResponse":{"properties":{"data":{"$ref":"#/components/schemas/Company","description":"Full company details"},"financial_summary":{"items":{"$ref":"#/components/schemas/FinancialYearSummary"},"type":"array","title":"Financial Summary","description":"Financial summary for recent years"},"cds":{"anyOf":[{"$ref":"#/components/schemas/CDSSummary"},{"type":"null"}],"description":"CDS - CompanyData Score (Pro feature)"},"insights":{"anyOf":[{"$ref":"#/components/schemas/CompanyInsights"},{"type":"null"}],"description":"Computed company insights (revenue trend, size, age, profitability)"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data"],"title":"CompanyResponse","description":"Response for single company lookup."},"CompanySizeInsight":{"properties":{"category":{"type":"string","title":"Category","description":"Size category: micro, small, medium, large"},"basis":{"type":"string","title":"Basis","description":"Basis for classification: employees or revenue"}},"type":"object","required":["category","basis"],"title":"CompanySizeInsight","description":"Company size classification using EU SME thresholds."},"CompanySmileyResponse":{"properties":{"total":{"type":"integer","title":"Total"},"establishments":{"items":{"$ref":"#/components/schemas/SmileyEstablishment"},"type":"array","title":"Establishments"}},"type":"object","required":["total","establishments"],"title":"CompanySmileyResponse","description":"Food inspection (smiley) results for a company's establishments."},"CompanySnapshot":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type"},"industry_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Code"},"industry_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Text"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"municipality_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Code"}},"type":"object","title":"CompanySnapshot","description":"Denormalized company card, refreshed when the record is touched."},"CompanySummaryData":{"properties":{"summary_da":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Da","description":"Danish summary"},"summary_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary En","description":"English summary"},"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At","description":"When the summary was generated"}},"type":"object","title":"CompanySummaryData","description":"AI-generated company summary."},"CompanySummaryResponse":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CompanySummaryData"},{"type":"null"}]},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","required":["data","meta"],"title":"CompanySummaryResponse","description":"Response for company AI summary endpoint."},"CompanyTendersResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"total":{"type":"integer","title":"Total"},"tenders":{"items":{"$ref":"#/components/schemas/WonTender"},"type":"array","title":"Tenders"}},"type":"object","required":["cvr","total","tenders"],"title":"CompanyTendersResponse"},"CompanyTimelineResponse":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"CVR number of the company"},"company_name":{"type":"string","title":"Company Name","description":"Company name"},"events":{"items":{"$ref":"#/components/schemas/TimelineEvent"},"type":"array","title":"Events","description":"List of timeline events, sorted by date (newest first)"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["cvr","company_name","events"],"title":"CompanyTimelineResponse","description":"Response for company timeline endpoint."},"ContactEnrichmentCounts":{"properties":{"people":{"type":"integer","title":"People","description":"Number of named contact people found","default":0},"emails":{"type":"integer","title":"Emails","description":"Number of email addresses found","default":0},"phones":{"type":"integer","title":"Phones","description":"Number of phone numbers found","default":0},"socials":{"type":"integer","title":"Socials","description":"Number of social-media profiles found","default":0}},"type":"object","title":"ContactEnrichmentCounts","description":"Value-free counts of enriched contact data (safe to show any tier)."},"ContactEnrichmentSummary":{"properties":{"available":{"type":"boolean","title":"Available","description":"Whether enriched contact values exist (gated to Pro)","default":false},"counts":{"$ref":"#/components/schemas/ContactEnrichmentCounts","description":"Counts of what was found (value-free)"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Discovered official website URL — shown to all; set only when CVR has no registered website"},"website_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Source","description":"Origin of the website field","examples":["discovered"]},"contacts":{"anyOf":[{"$ref":"#/components/schemas/ScrapedContactData"},{"type":"null"}],"description":"The actual enriched contact values (named people, emails, phones, socials). Populated only for Pro callers; null for basic — the counts above advertise availability without exposing values."}},"type":"object","title":"ContactEnrichmentSummary","description":"Availability summary for enriched contact data.\n\nDrives the company-page teaser: counts + discovered website are shown to\neveryone (no personal data), while the actual contact VALUES stay Pro-gated."},"CourtHearingItem":{"properties":{"court":{"type":"string","title":"Court","description":"Court display name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"civile-sager | straffesager | tvangsauktioner | andet"},"start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start","description":"Hearing start time"},"roles":{"items":{"type":"string"},"type":"array","title":"Roles","description":"This company's role(s) in the hearing"},"type_line":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Line","description":"Hearing type as published (e.g. 'Borgerlig sag, Hovedforhandling')"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"Case subject when published"},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Public","description":"Whether the hearing is public; None when unstated"}},"type":"object","required":["court"],"title":"CourtHearingItem"},"CreateActivityRequest":{"properties":{"kind":{"type":"string","enum":["note","call","followup"],"title":"Kind"},"body":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Body"},"followup_due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Followup Due At"},"followup_recurrence":{"type":"string","enum":["none","weekly","monthly","quarterly","yearly"],"title":"Followup Recurrence","default":"none"}},"type":"object","required":["kind"],"title":"CreateActivityRequest"},"CreateRecordRequest":{"properties":{"cvr":{"type":"string","pattern":"^\\d{8}$","title":"Cvr"},"source":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Source"}},"type":"object","required":["cvr"],"title":"CreateRecordRequest"},"CreateWebhookRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Human-readable label shown in your account. Not sent to the webhook URL.","examples":["Production CRM sync"]},"url":{"type":"string","title":"Url","description":"HTTPS URL that will receive POST requests when matching events occur. Must respond with a 2xx status code within 10 seconds.","examples":["https://api.example.com/companydata-webhook"]},"event_types":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array","title":"Event Types","description":"Event types this webhook should receive. Defaults to all event types. See `GET /v1/webhooks/event-types` for the catalog."},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Custom HTTP headers added to every delivery. Useful for routing or additional authentication on your endpoint.","examples":[{"X-My-Service-Token":"abc123"}]}},"type":"object","required":["name","url"],"title":"CreateWebhookRequest","description":"Request to create a webhook."},"CvrContact":{"properties":{"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Phone number","examples":["+45 12345678"]},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email address"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Website URL"},"fax":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fax","description":"Fax number"}},"type":"object","title":"CvrContact","description":"Contact information as registered in CVR (adds the fax number, which\na claimed profile cannot set)."},"CvrFilterResponse":{"properties":{"cvrs":{"items":{"type":"string"},"type":"array","title":"Cvrs","description":"The CVRs being monitored, in registration order."},"event_types":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array","title":"Event Types","description":"Event types being delivered for these CVRs."},"cvr_count":{"type":"integer","title":"Cvr Count","description":"Number of CVRs in the filter. Convenience for clients."}},"type":"object","required":["cvrs","event_types","cvr_count"],"title":"CvrFilterResponse","description":"The bulk CVR filter currently set on a webhook."},"DateRange":{"properties":{"from":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From","description":"Inclusive start date"},"to":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"To","description":"Inclusive end date"}},"type":"object","title":"DateRange","description":"Inclusive date range. At least one bound must be set."},"DeliveryStatus":{"type":"string","enum":["pending","sent","failed","delivered"],"title":"DeliveryStatus","description":"Status of a notification delivery."},"DocumentInfo":{"properties":{"url":{"type":"string","title":"Url","description":"Download URL for the document"},"mime_type":{"type":"string","title":"Mime Type","description":"MIME type","examples":["application/pdf","application/xml"]},"document_type":{"type":"string","title":"Document Type","description":"Document type","examples":["AARSRAPPORT"]}},"type":"object","required":["url","mime_type","document_type"],"title":"DocumentInfo","description":"Information about a document attached to the announcement."},"EInvoicingEndpoint":{"properties":{"endpoint_id":{"type":"string","title":"Endpoint Id","description":"Scheme and value, e.g. 0088:5790000000000","examples":["0088:5798000416604"]},"participant_id":{"type":"string","title":"Participant Id","description":"Full Peppol participant identifier"},"scheme":{"type":"string","title":"Scheme","description":"ISO 6523 scheme code: 0088 EAN/GLN, 0184 CVR, 0096 P-number, 0198 SE-number","examples":["0088"]},"scheme_name":{"type":"string","title":"Scheme Name","description":"gln, cvr, p_number, se_number or other","examples":["gln"]},"ean":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ean","description":"The EAN (GLN) number when the endpoint is an EAN address","examples":["5798000416604"]},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR number of the receiving company, when stated or derivable","examples":["29189854"]},"cvr_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr Source","description":"Where the CVR came from: participant, identifier, vat, p_number or se_number"},"p_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"P Number"},"se_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Se Number"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name on the business card","examples":["Københavns Kommune"]},"names":{"items":{"$ref":"#/components/schemas/EndpointName"},"type":"array","title":"Names"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"geo_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Geo Info"},"identifiers":{"items":{"$ref":"#/components/schemas/EndpointIdentifier"},"type":"array","title":"Identifiers"},"websites":{"items":{"type":"string"},"type":"array","title":"Websites"},"contacts":{"items":{"$ref":"#/components/schemas/EndpointContact"},"type":"array","title":"Contacts","description":"Contacts on the card, often the access point provider"},"additional_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Info"},"registration_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Date","description":"Business card registration date (YYYY-MM-DD)"},"can_receive_invoice":{"type":"boolean","title":"Can Receive Invoice","description":"True when the endpoint accepts at least one invoice format"},"accepts":{"items":{"type":"string"},"type":"array","title":"Accepts","description":"Document kinds accepted: invoice, credit_note, reminder, order, order_response, ..."},"invoice_formats":{"items":{"type":"string"},"type":"array","title":"Invoice Formats","description":"Invoice formats accepted: oioubl_2.1, oioubl_2.02, peppol_bis_3_ubl, peppol_bis_3_cii, peppol_pint, peppol_selfbilling, en16931"},"document_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Document Types","description":"Raw Peppol document type identifiers (only with include=document_types)"},"active":{"type":"boolean","title":"Active","description":"False when the endpoint has disappeared from the Peppol Directory","default":true},"first_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"removed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Removed At"}},"type":"object","required":["endpoint_id","participant_id","scheme","scheme_name","can_receive_invoice"],"title":"EInvoicingEndpoint","description":"One electronic address (Peppol participant) that can receive documents."},"EanLookupResponse":{"properties":{"ean":{"type":"string","title":"Ean"},"endpoint":{"$ref":"#/components/schemas/EInvoicingEndpoint"},"company":{"anyOf":[{"$ref":"#/components/schemas/CompanyRef"},{"type":"null"}],"description":"The registered company behind the CVR, when we hold it"}},"type":"object","required":["ean","endpoint"],"title":"EanLookupResponse"},"EanSearchResponse":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"endpoints":{"items":{"$ref":"#/components/schemas/EInvoicingEndpoint"},"type":"array","title":"Endpoints"}},"type":"object","required":["total","limit","offset","endpoints"],"title":"EanSearchResponse"},"EndpointContact":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"EndpointContact"},"EndpointIdentifier":{"properties":{"scheme":{"type":"string","title":"Scheme","description":"Identifier scheme as published, e.g. OrgNr or VAT"},"value":{"type":"string","title":"Value"}},"type":"object","required":["scheme","value"],"title":"EndpointIdentifier"},"EndpointName":{"properties":{"name":{"type":"string","title":"Name"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang","description":"Language code when the card states one"}},"type":"object","required":["name"],"title":"EndpointName"},"EnergyLabelBuilding":{"properties":{"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"use_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Use Code"},"year_built":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year Built"},"heat_supply":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heat Supply"}},"type":"object","title":"EnergyLabelBuilding","description":"Building covered by an energy label (from EMOData)."},"EnergyLabelItem":{"properties":{"serial":{"type":"string","title":"Serial"},"classification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classification","description":"A2020/A2015/A2010/B..G"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"VALID/EXPIRED/..."},"valid_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid From"},"valid_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid To"},"type_usage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Usage"},"based_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Based On"},"demo_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Demo Link","description":"sparenergi.dk deep link"},"buildings":{"items":{"$ref":"#/components/schemas/EnergyLabelBuilding"},"type":"array","title":"Buildings"}},"type":"object","required":["serial"],"title":"EnergyLabelItem","description":"A single energy label on a property (Energistyrelsen EMOData)."},"EventType":{"type":"string","enum":["company_status","ownership","board","director","financial","announcement","address","contact","financial_distress","corporate_announcement","property_ownership","tender_award","new_company","press_release","media_mention","court_hearing","screen_entered","screen_left"],"title":"EventType","description":"Types of change events that can trigger notifications."},"EventTypeInfo":{"properties":{"value":{"type":"string","title":"Value","description":"Identifier used in `event_type` fields and webhook filter configuration."},"label_da":{"type":"string","title":"Label Da","description":"Short human-readable Danish label."},"label_en":{"type":"string","title":"Label En","description":"Short human-readable English label."},"description":{"type":"string","title":"Description","description":"What change in the CVR data triggers this event."}},"type":"object","required":["value","label_da","label_en","description"],"title":"EventTypeInfo","description":"A single notification event type that can appear in webhook payloads."},"FeedNotice":{"properties":{"message_number":{"type":"string","title":"Message Number","examples":["S16032026-23"]},"publication_date":{"type":"string","title":"Publication Date","description":"Publication date in Statstidende (YYYY-MM-DD)"},"indexed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Indexed At","description":"When we stored the notice; the polling cursor follows this"},"rubrik":{"anyOf":[{"$ref":"#/components/schemas/Rubrik"},{"type":"null"}]},"cvrs":{"items":{"type":"string"},"type":"array","title":"Cvrs"},"companies":{"items":{"$ref":"#/components/schemas/NoticeCompany"},"type":"array","title":"Companies"},"municipality_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Code","description":"Company municipality (single-company notices)"},"municipality_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Name"},"industry_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Code"},"industry_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Text"},"division_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Division Code"},"decree_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decree Date","description":"Bankruptcy decree date (YYYY-MM-DD) on konkursdekret notices"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court"},"case_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Number"},"kurator":{"anyOf":[{"$ref":"#/components/schemas/NoticeKurator"},{"type":"null"}],"description":"Bankruptcy trustee as published"},"revoked":{"type":"boolean","title":"Revoked","description":"A later Ophævelse af konkursdekret revoked this decree","default":false},"revoked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked By","description":"Message number of the revoking notice"},"revokes":{"type":"boolean","title":"Revokes","description":"This notice revokes an earlier bankruptcy decree","default":false},"correction_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Correction Of","description":"Message number this notice corrects"},"corrected_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corrected By","description":"Message number of a later correction"},"summary":{"type":"string","title":"Summary","description":"The notice as one Danish sentence or two","default":""},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/NoticeFieldGroup"},"type":"array"},{"type":"null"}],"title":"Fields","description":"Structured fields as published (with include=fields; always on the single-notice endpoint). Submitter and billing groups and CPR numbers are left out."}},"type":"object","required":["message_number","publication_date","cvrs"],"title":"FeedNotice"},"FinancialMetric":{"type":"string","enum":["revenue","gross_profit","operating_profit","profit_loss","equity","total_assets","equity_ratio","current_ratio","return_on_equity","profit_margin","revenue_growth","gross_profit_growth","equity_growth"],"title":"FinancialMetric","description":"Key figures available as screening criteria.\n\nEach value is a key in the `latest_financials` subdocument. Amounts are\nDKK from the company's most recent annual report; ratios are fractions\n(equity_ratio 0.15 = 15% soliditetsgrad)."},"FinancialPeriod":{"properties":{"start_date":{"type":"string","format":"date-time","title":"Start Date","description":"Period start date"},"end_date":{"type":"string","format":"date-time","title":"End Date","description":"Period end date (fiscal year end)"}},"type":"object","required":["start_date","end_date"],"title":"FinancialPeriod","description":"Accounting period for a financial statement."},"FinancialRatios":{"properties":{"profit_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Margin","description":"Profit margin: profit_loss / revenue (overskudsgrad)"},"return_on_equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Return On Equity","description":"Return on equity: profit_loss / equity (egenkapitalforrentning)"},"equity_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity Ratio","description":"Equity ratio: equity / total_assets (soliditetsgrad)"},"current_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio","description":"Current ratio: current_assets / shortterm_liabilities (likviditetsgrad)"}},"type":"object","title":"FinancialRatios","description":"Calculated financial ratios (nøgletal)."},"FinancialStatement":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"8-digit CVR number","examples":["12345678"]},"period":{"$ref":"#/components/schemas/FinancialPeriod","description":"Accounting period"},"report_type":{"type":"string","title":"Report Type","description":"Type of publication","default":"regnskab","examples":["regnskab","koncernregnskab"]},"reporting_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reporting Class","description":"Reporting class (regnskabsklasse)","examples":["A","B","C","D"]},"is_consolidated":{"type":"boolean","title":"Is Consolidated","description":"Whether this is a consolidated (group) report","default":false},"is_amended":{"type":"boolean","title":"Is Amended","description":"Whether this is an amended/corrected filing","default":false},"approval_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approval Date","description":"Date report was approved by general assembly"},"chairman_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chairman Name","description":"Name of meeting chairman (dirigent)"},"currency":{"type":"string","title":"Currency","description":"Currency for all amounts","default":"DKK"},"income_statement":{"$ref":"#/components/schemas/IncomeStatement","description":"Income statement figures"},"balance_sheet":{"$ref":"#/components/schemas/BalanceSheet","description":"Balance sheet figures"},"cash_flow":{"anyOf":[{"$ref":"#/components/schemas/CashFlowStatement"},{"type":"null"}],"description":"Cash flow statement (if available)"},"prev_income_statement":{"anyOf":[{"$ref":"#/components/schemas/IncomeStatement"},{"type":"null"}],"description":"Previous period income statement"},"prev_balance_sheet":{"anyOf":[{"$ref":"#/components/schemas/BalanceSheet"},{"type":"null"}],"description":"Previous period balance sheet"},"prev_cash_flow":{"anyOf":[{"$ref":"#/components/schemas/CashFlowStatement"},{"type":"null"}],"description":"Previous period cash flow"},"ratios":{"anyOf":[{"$ref":"#/components/schemas/FinancialRatios"},{"type":"null"}],"description":"Calculated financial ratios"},"employees":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employees","description":"Average number of employees"},"dividend_proposed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dividend Proposed","description":"Proposed dividend amount in DKK"},"audit_info":{"anyOf":[{"$ref":"#/components/schemas/AuditInfo"},{"type":"null"}],"description":"Audit information"},"documents":{"items":{"$ref":"#/components/schemas/DocumentInfo"},"type":"array","title":"Documents","description":"Attached documents (PDF, XBRL)"},"meta":{"$ref":"#/components/schemas/FinancialStatementMeta","description":"Statement metadata"}},"type":"object","required":["cvr","period","meta"],"title":"FinancialStatement","description":"Complete financial statement (årsrapport) for a company.\n\nCombines metadata from CVR offentliggørelser with key figures extracted from XBRL documents."},"FinancialStatementMeta":{"properties":{"announcement_id":{"type":"string","title":"Announcement Id","description":"Unique announcement ID (URN) from CVR"},"case_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Number","description":"Case number (sagsNummer)"},"publication_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Publication Date","description":"Publication date on CVR"},"cvr_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cvr Updated At","description":"Last update timestamp from CVR"},"xbrl_parsed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Xbrl Parsed At","description":"When XBRL was parsed by Selskabsbasen"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Record creation time"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Record last update time"}},"type":"object","required":["announcement_id"],"title":"FinancialStatementMeta","description":"Metadata about the financial statement."},"FinancialSummary":{"properties":{"period_end":{"type":"string","format":"date-time","title":"Period End","description":"End date of fiscal period"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start","description":"Start date of fiscal period"},"reporting_scope":{"type":"string","title":"Reporting Scope","description":"group when explicitly recorded; otherwise unspecified. Legacy false consolidation flags do not prove company-only scope.","default":"unspecified"},"currency":{"type":"string","title":"Currency","description":"Currency code (e.g., DKK, EUR)","default":"DKK"},"revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue","description":"Annual revenue"},"gross_profit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gross Profit","description":"Gross profit"},"profit_loss":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profit Loss","description":"Net profit/loss"},"total_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Assets","description":"Total assets"},"equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Equity","description":"Shareholder equity"},"employees":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employees","description":"Average number of employees"},"announcement_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Id","description":"Announcement ID for PDF download link"}},"type":"object","required":["period_end"],"title":"FinancialSummary","description":"Simplified financial summary for company overview."},"FinancialYearSummary":{"properties":{"year":{"type":"integer","title":"Year","description":"Fiscal year","examples":[2024]},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start","description":"Start of the reporting period"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End","description":"End of the reporting period"},"reporting_scope":{"type":"string","title":"Reporting Scope","description":"group when explicitly recorded; otherwise unspecified","default":"unspecified"},"currency":{"type":"string","title":"Currency","description":"Currency code (e.g., DKK, EUR)","default":"DKK"},"revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue","description":"Annual revenue (omsætning)"},"gross_profit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gross Profit","description":"Gross profit (bruttofortjeneste) in DKK"},"profit_loss":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profit Loss","description":"Net profit/loss (årets resultat) in DKK"},"total_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Assets","description":"Total assets (aktiver i alt) in DKK"},"equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Equity","description":"Shareholder equity (egenkapital) in DKK"},"employees":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employees","description":"Average number of employees"},"announcement_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Id","description":"Announcement ID for linking to document download"},"has_pdf":{"type":"boolean","title":"Has Pdf","description":"Whether a PDF document is available","default":false},"has_xhtml":{"type":"boolean","title":"Has Xhtml","description":"Whether an XHTML (viewable) document is available","default":false},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Public URL of the original filing at Erhvervsstyrelsen (regnskaber.virk.dk). Free for everyone; our inline viewer and PDF proxy remain Pro-only.","examples":["http://regnskaber.virk.dk/07887831/Y3ZyLmRrOi8vcGRmcy8xMzg3ODg3MA.pdf"]}},"type":"object","required":["year"],"title":"FinancialYearSummary","description":"Key financial figures for a single fiscal year."},"GeoPolygon":{"properties":{"type":{"type":"string","title":"Type","default":"Polygon"},"coordinates":{"items":{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},"type":"array","title":"Coordinates"}},"type":"object","required":["coordinates"],"title":"GeoPolygon","description":"GeoJSON Polygon."},"GeoRadius":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat","description":"Latitude of center"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng","description":"Longitude of center"},"radius":{"type":"integer","maximum":50000.0,"minimum":50.0,"title":"Radius","description":"Radius in meters (50-50000)"}},"type":"object","required":["lat","lng","radius"],"title":"GeoRadius","description":"Circular geographic area (same bounds as /v1/companies geo search)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IncomeStatement":{"properties":{"revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue","description":"Net revenue (nettoomsætning)"},"gross_profit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gross Profit","description":"Gross profit (bruttofortjeneste)"},"ebitda":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ebitda","description":"EBITDA - profit before depreciation & amortization"},"operating_profit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Operating Profit","description":"Operating profit (resultat af ordinær primær drift)"},"profit_before_tax":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profit Before Tax","description":"Profit before tax (resultat før skat)"},"profit_loss":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profit Loss","description":"Net profit/loss for the year (årets resultat)"},"tax_expense":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tax Expense","description":"Tax expense (skat af årets resultat)"},"external_expenses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"External Expenses","description":"External expenses (eksterne omkostninger)"},"staff_costs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staff Costs","description":"Staff costs (personaleomkostninger)"},"depreciation":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Depreciation","description":"Depreciation & amortization (af- og nedskrivninger)"},"finance_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Finance Income","description":"Finance income (finansielle indtægter)"},"finance_costs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Finance Costs","description":"Finance costs (finansielle omkostninger)"},"other_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Other Income","description":"Other operating income"},"income_from_subsidiaries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Income From Subsidiaries","description":"Income from investments in subsidiaries"},"income_from_associates":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Income From Associates","description":"Income from investments in associates"}},"type":"object","title":"IncomeStatement","description":"Key figures from the income statement (resultatopgørelse). All amounts in DKK."},"Industry":{"properties":{"code":{"type":"string","title":"Code","description":"6-digit industry code (DB07)","examples":["620100"]},"name":{"type":"string","title":"Name","description":"Industry name in selected locale"},"name_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name En","description":"English industry name"},"count":{"type":"integer","title":"Count","description":"Total company count (primary + secondary)"},"primary_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Primary Count","description":"Companies with this as primary industry"},"secondary_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Secondary Count","description":"Companies with this as secondary industry"},"active_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Active Count","description":"Active companies with this as primary industry; null until computed, 0 for a retired code"},"division":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Division","description":"2-digit industry category (division) the code belongs to"}},"type":"object","required":["code","name","count"],"title":"Industry","description":"Industry data for dropdown/filter."},"IndustryTranslation":{"properties":{"da":{"type":"string","title":"Da","description":"Danish name"},"en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"En","description":"English name"}},"type":"object","required":["da"],"title":"IndustryTranslation","description":"Industry translation with both Danish and English names."},"IndustryTranslationsResponse":{"properties":{"translations":{"additionalProperties":{"$ref":"#/components/schemas/IndustryTranslation"},"type":"object","title":"Translations","description":"Map of code to translations"},"count":{"type":"integer","title":"Count","description":"Number of translations"}},"type":"object","required":["translations","count"],"title":"IndustryTranslationsResponse","description":"Response with all industry translations for client-side caching."},"KoncernGraphEdge":{"properties":{"source":{"type":"string","title":"Source"},"target":{"type":"string","title":"Target"},"ownership_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ownership Percent"},"voting_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voting Percent"}},"type":"object","required":["source","target"],"title":"KoncernGraphEdge"},"KoncernGraphNode":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr"},"unit_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Number"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"depth":{"type":"integer","title":"Depth"}},"type":"object","required":["id","type","name","depth"],"title":"KoncernGraphNode"},"KoncernGraphResponse":{"properties":{"root":{"type":"string","title":"Root"},"nodes":{"items":{"$ref":"#/components/schemas/KoncernGraphNode"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/KoncernGraphEdge"},"type":"array","title":"Edges"},"truncated":{"type":"boolean","title":"Truncated","default":false}},"type":"object","required":["root","nodes","edges"],"title":"KoncernGraphResponse"},"KuratorDirectoryEntry":{"properties":{"name":{"type":"string","title":"Name","description":"Kurator name as published"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Title (e.g. Advokat)"},"active_cases_12m":{"type":"integer","title":"Active Cases 12M","description":"Konkursdekret appointments in the last 12 months"},"latest_appointment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Appointment","description":"Most recent appointment date"},"courts":{"items":{"type":"string"},"type":"array","title":"Courts","description":"Courts appearing in the appointments"}},"type":"object","required":["name","active_cases_12m"],"title":"KuratorDirectoryEntry"},"KuratorDirectoryResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/KuratorDirectoryEntry"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","required":["data","meta"],"title":"KuratorDirectoryResponse"},"KuratorInfo":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"name":{"type":"string","title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court"}},"type":"object","required":["name"],"title":"KuratorInfo","description":"Bankruptcy trustee as published in the notice (professional capacity)."},"LatestFinancials":{"properties":{"revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue","description":"Latest annual amount in the statement's currency. Missing or zero revenue falls back to gross profit; inspect metric to identify the amount (legacy field name)."},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Year of the financial data","examples":[2024]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","description":"Currency code of the figures (e.g., DKK, EUR, USD)","default":"DKK"},"metric":{"type":"string","title":"Metric","description":"Metric carried in the legacy revenue field: revenue or gross_profit","default":"revenue"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End","description":"End date of the annual reporting period"}},"type":"object","title":"LatestFinancials","description":"Latest financial figures for search results (lightweight)."},"LegalNoticeItem":{"properties":{"message_number":{"type":"string","title":"Message Number"},"publication_date":{"type":"string","title":"Publication Date"},"message_type_name":{"type":"string","title":"Message Type Name"},"cvrs":{"items":{"type":"string"},"type":"array","title":"Cvrs"},"company_name":{"type":"string","title":"Company Name","default":""},"summary":{"type":"string","title":"Summary","default":""},"kurator":{"anyOf":[{"$ref":"#/components/schemas/KuratorInfo"},{"type":"null"}],"description":"Kurator (trustee) when the notice appoints one"}},"type":"object","required":["message_number","publication_date","message_type_name"],"title":"LegalNoticeItem","description":"A single legal notice from Statstidende."},"LegalNoticePublicItem":{"properties":{"message_number":{"type":"string","title":"Message Number"},"publication_date":{"type":"string","title":"Publication Date"},"message_type_name":{"type":"string","title":"Message Type Name"},"cvrs":{"items":{"type":"string"},"type":"array","title":"Cvrs"},"company_name":{"type":"string","title":"Company Name","default":""},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"summary":{"type":"string","title":"Summary","default":""}},"type":"object","required":["message_number","publication_date","message_type_name"],"title":"LegalNoticePublicItem","description":"A legal notice for the public listing page."},"LegalNoticesPublicResponse":{"properties":{"notices":{"items":{"$ref":"#/components/schemas/LegalNoticePublicItem"},"type":"array","title":"Notices"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["notices","total"],"title":"LegalNoticesPublicResponse","description":"Response for public legal notices listing."},"LegalNoticesResponse":{"properties":{"notices":{"items":{"$ref":"#/components/schemas/LegalNoticeItem"},"type":"array","title":"Notices"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["notices","total"],"title":"LegalNoticesResponse","description":"Response for company legal notices."},"LifecyclePeriod":{"properties":{"valid_from":{"type":"string","format":"date-time","title":"Valid From","description":"Start of the period"},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"End of the period (null = the company exists)"}},"type":"object","required":["valid_from"],"title":"LifecyclePeriod","description":"A period in which the company existed (CVR livsforloeb)."},"LivestockHerd":{"properties":{"chr_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chr Number"},"herd_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Herd Number"},"species":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Species"},"usage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usage"},"business_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Type"},"sizes":{"items":{"$ref":"#/components/schemas/LivestockHerdSize"},"type":"array","title":"Sizes","default":[]},"total_animals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Animals"},"organic":{"type":"boolean","title":"Organic","default":false},"sizes_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sizes Updated At"},"created_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created Date"},"updated_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated Date"},"property":{"anyOf":[{"$ref":"#/components/schemas/LivestockHerdProperty"},{"type":"null"}]}},"type":"object","title":"LivestockHerd"},"LivestockHerdProperty":{"properties":{"bfe_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bfe Number","description":"BFE number of the property the herd stands on, resolved from the CHR stald coordinate via the matrikel register"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","description":"Location address of the CHR-nummer (the herd's physical site)"},"has_page":{"type":"boolean","title":"Has Page","description":"Whether property data exists for the BFE (i.e. a property page can be linked)","default":false}},"type":"object","title":"LivestockHerdProperty"},"LivestockHerdSize":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},"type":"object","title":"LivestockHerdSize"},"MatchedName":{"properties":{"type":{"type":"string","enum":["secondary_name","former_name"],"title":"Type","description":"`secondary_name` for a binavn, `former_name` for a name the company no longer has","examples":["secondary_name"]},"name":{"type":"string","title":"Name","description":"The binavn or former name that contains the query","examples":["7-ELEVEN A/S"]}},"type":"object","required":["type","name"],"title":"MatchedName","description":"The other name through which a company matched a name search."},"MatchedUnits":{"properties":{"count":{"type":"integer","title":"Count","description":"Number of the company's active production units (P-enheder) whose name matches the query","examples":[3]},"names":{"items":{"type":"string"},"type":"array","title":"Names","description":"Up to three distinct names of those units","examples":[["7-Eleven Butik 34","7-Eleven Butik 37","7-Eleven Butik 38"]]}},"type":"object","required":["count"],"title":"MatchedUnits","description":"Production units through which a company matched a name search."},"MatrikelPolygon":{"properties":{"matrikelnummer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matrikelnummer"},"ejerlav_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ejerlav Id"},"geometry":{"$ref":"#/components/schemas/GeoPolygon"}},"type":"object","required":["geometry"],"title":"MatrikelPolygon","description":"A matrikel parcel polygon with metadata."},"Municipality":{"properties":{"code":{"type":"string","title":"Code","description":"Municipality code","examples":["101"]},"name":{"type":"string","title":"Name","description":"Municipality name","examples":["København"]},"region_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Code","description":"Region code","examples":["1084"]},"region_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Name","description":"Region name","examples":["Region Hovedstaden"]}},"type":"object","required":["code","name"],"title":"Municipality","description":"Municipality data for dropdown/filter."},"NameHistoryEntry":{"properties":{"name":{"type":"string","title":"Name","description":"Company name"},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date when this name became valid"},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"Date when this name was replaced (null = current)"}},"type":"object","required":["name"],"title":"NameHistoryEntry","description":"A historical name entry with validity period."},"NewsItem":{"properties":{"kind":{"type":"string","title":"Kind"},"title":{"type":"string","title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"url":{"type":"string","title":"Url"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Domain"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"}},"type":"object","required":["kind","title","url"],"title":"NewsItem"},"NoticeCompany":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type","description":"Company form code, e.g. APS or A/S"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["cvr"],"title":"NoticeCompany"},"NoticeFeedResponse":{"properties":{"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total","description":"Matching notices; null when polling with cursor or since"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Pass as cursor to get the notices indexed after this page"},"notices":{"items":{"$ref":"#/components/schemas/FeedNotice"},"type":"array","title":"Notices"}},"type":"object","required":["limit","offset","notices"],"title":"NoticeFeedResponse"},"NoticeFieldGroup":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Field group as published, e.g. Kurator or Skifteret"},"fields":{"additionalProperties":true,"type":"object","title":"Fields"}},"type":"object","title":"NoticeFieldGroup"},"NoticeKurator":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"name":{"type":"string","title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court"}},"type":"object","required":["name"],"title":"NoticeKurator"},"NumericRange":{"properties":{"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min","description":"Inclusive lower bound"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max","description":"Inclusive upper bound"}},"type":"object","title":"NumericRange","description":"Inclusive min/max range. At least one bound must be set."},"OwnedCompany":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"CVR number of owned company"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Company name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Company status","examples":["active","dissolved"]},"ownership_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ownership Percent","description":"Ownership stake (0.05 = 5%)"},"voting_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voting Percent","description":"Voting rights (0.05 = 5%)"},"valid_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid From","description":"When ownership started"}},"type":"object","required":["cvr"],"title":"OwnedCompany","description":"A company in an ownership portfolio."},"OwnershipShare":{"properties":{"numerator":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Numerator","description":"Share numerator (tæller)"},"denominator":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Denominator","description":"Share denominator (nævner)"}},"type":"object","title":"OwnershipShare","description":"Ownership share expressed as a fraction (numerator/denominator)."},"ParticipantPortfolioResponse":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Participant portfolio data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data"],"title":"ParticipantPortfolioResponse","description":"Response for participant's company portfolio."},"ParticipantResponse":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Full participant details"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data"],"title":"ParticipantResponse","description":"Response for single participant lookup."},"ParticipantSearchResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/app__models__participant__ParticipantSearchResult"},"type":"array","title":"Data","description":"Matching participants"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination","description":"Pagination info"}},"type":"object","required":["data"],"title":"ParticipantSearchResponse","description":"Response for participant search endpoint."},"ParticipantSearchResultRelation":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"Company CVR number"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Company name"},"role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Name","description":"Role in the company"}},"type":"object","required":["cvr"],"title":"ParticipantSearchResultRelation","description":"A company relation shown in search results."},"PepMatch":{"properties":{"person_name":{"type":"string","title":"Person Name"},"person_unit_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Person Unit Number"},"roles":{"items":{"type":"string"},"type":"array","title":"Roles"},"confidence":{"type":"string","title":"Confidence","description":"name_exact (all name parts match) or name_partial (one name is the other with middle names missing; the registered surname matches in full)"},"pep":{"$ref":"#/components/schemas/PepMatchEntry"}},"type":"object","required":["person_name","confidence","pep"],"title":"PepMatch"},"PepMatchEntry":{"properties":{"source":{"type":"string","title":"Source","description":"PEP list: dk | fo (Faroe Islands) | gl (Greenland)"},"status":{"type":"string","title":"Status","description":"current if the person holds any capacity on the PEP list today, former if every capacity has been removed"},"full_name":{"type":"string","title":"Full Name"},"birth_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Birth Date","description":"Birth date from the PEP list (not available in CVR — use for manual verification)"},"positions":{"items":{"$ref":"#/components/schemas/PepPosition"},"type":"array","title":"Positions","description":"All PEP capacities for this person, current first (the lists carry one row per capacity; current and former capacities are merged here)"}},"type":"object","required":["source","status","full_name"],"title":"PepMatchEntry"},"PepPosition":{"properties":{"status":{"type":"string","title":"Status","description":"current (still on the PEP list in this capacity) or former (removed)"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Position that makes the person a PEP"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"PEP category per hvidvasklovens § 2, stk. 1, nr. 8 (current PEPs only)"},"added_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Added Date","description":"Date added to the PEP list"},"removed_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Removed Date","description":"Date removed from the PEP list"}},"type":"object","required":["status"],"title":"PepPosition"},"PepScreeningResponse":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"screened_count":{"type":"integer","title":"Screened Count","description":"Number of persons screened"},"matches":{"items":{"$ref":"#/components/schemas/PepMatch"},"type":"array","title":"Matches"},"note":{"type":"string","title":"Note","description":"Interpretation caveat — matches are possible matches, never confirmed PEP status"}},"type":"object","required":["cvr","screened_count","matches","note"],"title":"PepScreeningResponse"},"PlanningPlan":{"properties":{"planid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Planid"},"plannr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plannr"},"plannavn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plannavn"},"plantype":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plantype","description":"Plandata plan type code (e.g. 20.1)"},"anvendelse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anvendelse","description":"General use category (anvendelse generel)"},"zonestatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zonestatus"},"fremtidig_zonestatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fremtidig Zonestatus"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Plan status code (V=vedtaget, F=forslag)"},"dato_forslag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dato Forslag"},"dato_vedtaget":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dato Vedtaget"},"dato_ikraft":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dato Ikraft"},"doklink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doklink","description":"Link to the plan document (PDF)"},"kommunenavn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kommunenavn"},"distrikt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Distrikt"},"bebygpct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bebygpct","description":"Max building coverage percentage"},"maxetager":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Maxetager"},"maxbygnhjd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Maxbygnhjd","description":"Max building height in meters"}},"type":"object","title":"PlanningPlan","description":"A local plan or municipal plan framework covering a property (Plandata.dk)."},"PostalCode":{"properties":{"code":{"type":"string","title":"Code","description":"4-digit postal code","examples":["2100"]},"name":{"type":"string","title":"Name","description":"Postal code district name","examples":["København Ø"]},"municipality_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Code","description":"Municipality code","examples":["101"]},"municipality_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Name","description":"Municipality name","examples":["København"]}},"type":"object","required":["code","name"],"title":"PostalCode","description":"Postal code data for dropdown/filter."},"ProductionUnit":{"properties":{"p_number":{"type":"string","title":"P Number","description":"10-digit P-nummer (unique production unit identifier)","examples":["1234567890"]},"cvr":{"type":"string","title":"Cvr","description":"CVR number of parent company","examples":["12345678"]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Production unit name/description"},"status":{"type":"string","title":"Status","description":"Unit status","default":"active","examples":["active","dissolved"]},"is_main_unit":{"type":"boolean","title":"Is Main Unit","description":"Whether this is the main unit (hovedafdeling)","default":false},"valid_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid From","description":"Date P-enhed was created"},"valid_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Valid To","description":"Date P-enhed was dissolved (null = active)"},"address":{"anyOf":[{"$ref":"#/components/schemas/CompanyAddress"},{"type":"null"}],"description":"Physical location address"},"location":{"anyOf":[{"$ref":"#/components/schemas/app__models__company__GeoLocation"},{"type":"null"}],"description":"Geocoded coordinates"},"industry":{"anyOf":[{"$ref":"#/components/schemas/CompanyIndustry"},{"type":"null"}],"description":"Industry classification (may differ from parent)"},"employees":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"Employee count at this location"},"employees_monthly":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"Latest monthly headcount at this location from CVR"},"employees_yearly":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"CVR's yearly employment series at this location, which ends with 2018"},"contact":{"anyOf":[{"$ref":"#/components/schemas/CvrContact"},{"type":"null"}],"description":"Contact information for this location"},"advertising_protected":{"type":"boolean","title":"Advertising Protected","description":"Whether unit is protected from advertising","default":false},"meta":{"$ref":"#/components/schemas/ProductionUnitMeta","description":"Record metadata"}},"type":"object","required":["p_number","cvr"],"title":"ProductionUnit","description":"A production unit (P-enhed) - physical business location.\n\nP-enheder are separate entities in CVR with their own unique address,\nemployee counts, and industry classification."},"ProductionUnitListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProductionUnitSearchResult"},"type":"array","title":"Data","description":"List of production units"},"company_cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Cvr","description":"Parent company CVR"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Parent company name"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination","description":"Pagination info: page, limit, total, pages"}},"type":"object","required":["data"],"title":"ProductionUnitListResponse","description":"Response for listing production units of a company."},"ProductionUnitMeta":{"properties":{"cvr_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cvr Updated At","description":"Last sync from CVR"},"geocoded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Geocoded At","description":"When address was geocoded"},"synced_at":{"type":"string","format":"date-time","title":"Synced At","description":"Last sync timestamp"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Record creation time"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Record last update time"}},"type":"object","title":"ProductionUnitMeta","description":"Metadata for production unit records."},"ProductionUnitResponse":{"properties":{"data":{"$ref":"#/components/schemas/ProductionUnit","description":"Full production unit details"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Parent company name for context"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data"],"title":"ProductionUnitResponse","description":"Response for single production unit lookup."},"ProductionUnitSearchResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ProductionUnitSearchResult"},"type":"array","title":"Data","description":"Matching production units"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination","description":"Pagination info: page, limit, total, pages"}},"type":"object","required":["data"],"title":"ProductionUnitSearchResponse","description":"Response for production unit search endpoint."},"ProductionUnitSearchResult":{"properties":{"p_number":{"type":"string","title":"P Number","description":"10-digit P-nummer","examples":["1234567890"]},"cvr":{"type":"string","title":"Cvr","description":"Parent company CVR","examples":["12345678"]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Production unit name"},"status":{"type":"string","title":"Status","description":"Unit status","examples":["active","dissolved"]},"is_main_unit":{"type":"boolean","title":"Is Main Unit","description":"Whether this is the main unit","default":false},"address":{"anyOf":[{"$ref":"#/components/schemas/CompanyAddress"},{"type":"null"}],"description":"Physical address"},"industry":{"anyOf":[{"$ref":"#/components/schemas/CompanyIndustry"},{"type":"null"}],"description":"Industry classification"},"employees":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"Employee information"},"location":{"anyOf":[{"$ref":"#/components/schemas/app__models__company__GeoLocation"},{"type":"null"}],"description":"Geocoded coordinates"},"distance_meters":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance Meters","description":"Distance from search point (location searches only)"}},"type":"object","required":["p_number","cvr","status"],"title":"ProductionUnitSearchResult","description":"Simplified production unit for search results."},"ProfitabilityInsight":{"properties":{"status":{"type":"string","title":"Status","description":"Status: profitable, loss, breakeven"},"margin_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Margin Percent","description":"Profit margin percentage"}},"type":"object","required":["status"],"title":"ProfitabilityInsight","description":"Profitability insight based on latest financial data."},"PropertyAdministratorResponse":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"administrator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrator Name"},"administrator_cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrator Cvr"},"status":{"type":"string","title":"Status"}},"type":"object","required":["bfe_number","status"],"title":"PropertyAdministratorResponse","description":"Administrator for API response."},"PropertyBuildingData":{"properties":{"ejendomstype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ejendomstype"},"buildings":{"items":{"$ref":"#/components/schemas/BuildingInfo"},"type":"array","title":"Buildings"},"units":{"items":{"$ref":"#/components/schemas/UnitInfo"},"type":"array","title":"Units"},"land_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Land Area"}},"type":"object","title":"PropertyBuildingData","description":"Aggregated building/unit data for a property."},"PropertyBuildingsResponse":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number","description":"BFE number of the property"},"buildings":{"items":{"$ref":"#/components/schemas/BuildingPolygon"},"type":"array","title":"Buildings","description":"Building footprints (WGS84) whose centroid lies on the property's parcels"},"count":{"type":"integer","title":"Count","description":"Number of footprints returned","default":0},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Set to 'fetch_failed' when the upstream WFS was unavailable (result not cached)"}},"type":"object","required":["bfe_number"],"title":"PropertyBuildingsResponse","description":"GeoDanmark building footprints (bygningspolygoner) for a property."},"PropertyClimateSummary":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"assessed":{"type":"boolean","title":"Assessed"},"bluespot_at_point":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Bluespot At Point"},"bluespot_fill_mm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bluespot Fill Mm"},"bluespot_share_10m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bluespot Share 10M"},"havvand_flood_level_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Havvand Flood Level M"}},"type":"object","required":["bfe_number","assessed"],"title":"PropertyClimateSummary","description":"Per-property entry in a company climate aggregation."},"PropertyDetailResponse":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"withheld":{"type":"boolean","title":"Withheld","description":"True when the property's details are withheld after a granted objection from the owner: only number, type, address and parcels are given","default":false},"property_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Type","description":"samlet_fast_ejendom, ejerlejlighed or bygning_paa_fremmed_grund"},"property_type_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Property Type Code","description":"BBR ejendomstype code (1, 2 or 3)"},"ejerlejlighedsnummer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ejerlejlighedsnummer"},"matrikler":{"items":{"$ref":"#/components/schemas/PropertyLookupMatrikel"},"type":"array","title":"Matrikler","description":"Parcels (ejerlav + matrikelnummer) the property holds"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"location":{"anyOf":[{"$ref":"#/components/schemas/app__models__property__GeoLocation"},{"type":"null"}]},"building_data":{"anyOf":[{"$ref":"#/components/schemas/PropertyBuildingData"},{"type":"null"}]},"matrikel_polygons":{"anyOf":[{"items":{"$ref":"#/components/schemas/MatrikelPolygon"},"type":"array"},{"type":"null"}],"title":"Matrikel Polygons"},"owner_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Type","description":"The current owners' shared owner_type, 'mixed' when they differ, null when unknown","examples":["private"]},"owners":{"items":{"$ref":"#/components/schemas/PropertyOwner"},"type":"array","title":"Owners","description":"Current owners of every kind (companies with CVR and name)"},"ownerships":{"items":{"$ref":"#/components/schemas/PropertyOwnershipResponse"},"type":"array","title":"Ownerships"},"transfers":{"items":{"$ref":"#/components/schemas/PropertyTransferResponse"},"type":"array","title":"Transfers"},"administrators":{"items":{"$ref":"#/components/schemas/PropertyAdministratorResponse"},"type":"array","title":"Administrators"},"energy_label":{"anyOf":[{"$ref":"#/components/schemas/PropertyEnergyLabelResponse"},{"type":"null"}],"description":"Only with include=energy_label (or all); null when no label data exists"},"climate":{"anyOf":[{"$ref":"#/components/schemas/ClimateRiskResponse"},{"type":"null"}],"description":"Only with include=climate (or all); null when the property cannot be assessed"},"planning":{"anyOf":[{"$ref":"#/components/schemas/PropertyPlanningResponse"},{"type":"null"}],"description":"Only with include=planning (or all); null when the property cannot be assessed"},"valuation":{"anyOf":[{"$ref":"#/components/schemas/PropertyValuationResponse"},{"type":"null"}],"description":"Only with include=valuation (or all); null when no public valuation is known"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","required":["bfe_number","ownerships","transfers","administrators"],"title":"PropertyDetailResponse","description":"Full property details including transfers, transactions, and administrators."},"PropertyEnergyLabelResponse":{"properties":{"version":{"type":"integer","title":"Version"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"bfe or bbr lookup path"},"classification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classification","description":"Current headline label"},"valid_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid To"},"label_count":{"type":"integer","title":"Label Count","default":0},"labels":{"items":{"$ref":"#/components/schemas/EnergyLabelItem"},"type":"array","title":"Labels"},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At"}},"type":"object","required":["version"],"title":"PropertyEnergyLabelResponse","description":"Energy labels for a property (EMOData lookup, cached on the property)."},"PropertyLookupItem":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number","description":"BFE number; use it with /v1/properties/{bfe_number}"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"samlet_fast_ejendom, ejerlejlighed or bygning_paa_fremmed_grund","examples":["ejerlejlighed"]},"type_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type Code","description":"BBR ejendomstype code (1, 2 or 3)"},"relation":{"type":"string","title":"Relation","description":"parcel: the property the land belongs to; unit: an ejerlejlighed at the address","examples":["unit"]},"ejerlejlighedsnummer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ejerlejlighedsnummer"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","description":"The unit address for ejerlejligheder, else the property's address"},"adresse_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adresse Id","description":"DAR/DAWA adresse id of the unit (unit relations only)"},"matrikler":{"items":{"$ref":"#/components/schemas/PropertyLookupMatrikel"},"type":"array","title":"Matrikler"},"details_available":{"type":"boolean","title":"Details Available","description":"Whether /v1/properties/{bfe_number} has data for this BFE"},"withheld":{"type":"boolean","title":"Withheld","description":"True when the property's details are withheld after a granted objection","default":false}},"type":"object","required":["bfe_number","relation","details_available"],"title":"PropertyLookupItem","description":"A property (BFE) that the looked-up address, parcel or point belongs to."},"PropertyLookupMatrikel":{"properties":{"ejerlavkode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ejerlavkode","description":"Ejerlav code"},"matrikelnummer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matrikelnummer"}},"type":"object","title":"PropertyLookupMatrikel"},"PropertyLookupResponse":{"properties":{"match":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Match","description":"What the input resolved to: type (adresse, adgangsadresse, matrikel, koordinat), id and betegnelse; kategori A/B/C for free-text addresses (A exact, B confident, C uncertain)"},"properties":{"items":{"$ref":"#/components/schemas/PropertyLookupItem"},"type":"array","title":"Properties"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["properties","count"],"title":"PropertyLookupResponse","description":"Properties matching an address, DAWA id, cadastral number or coordinate."},"PropertyOwner":{"properties":{"owner_type":{"type":"string","title":"Owner Type","description":"private, social_housing, company, association, housing_cooperative, municipality, other_municipality, region, state, other, not_calculated or unknown","examples":["private"]},"owner_type_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Type Code","description":"EJF ejerforholdskode","examples":["10"]},"owner_type_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Type Text","description":"The register's text for the code","examples":["Privatpersoner, incl. I/S"]},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"Owning company's CVR (companies only)"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Owning company's name (companies only)"},"share":{"anyOf":[{"$ref":"#/components/schemas/OwnershipShare"},{"type":"null"}],"description":"Ownership share (actual, else registered)"},"since":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since","description":"Owner since (virkningFra)"},"primary_contact":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary Contact"}},"type":"object","required":["owner_type"],"title":"PropertyOwner","description":"A current owner. Companies carry CVR and name; every other owner only its\ntype, share and date. Private owners are never named."},"PropertyOwnershipResponse":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"cvr":{"type":"string","title":"Cvr"},"ownership_type_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ownership Type Code"},"actual_ownership":{"anyOf":[{"$ref":"#/components/schemas/OwnershipShare"},{"type":"null"}]},"registered_ownership":{"anyOf":[{"$ref":"#/components/schemas/OwnershipShare"},{"type":"null"}]},"primary_contact":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Primary Contact"},"status":{"type":"string","title":"Status"},"effective_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective From"},"effective_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Effective To"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"building_data":{"anyOf":[{"$ref":"#/components/schemas/PropertyBuildingData"},{"type":"null"}]}},"type":"object","required":["bfe_number","cvr","status"],"title":"PropertyOwnershipResponse","description":"Single property ownership for API response (excludes raw field)."},"PropertyPlanningResponse":{"properties":{"version":{"type":"integer","title":"Version"},"zonestatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zonestatus","description":"Byzone/Landzone/Sommerhusomraade"},"lokalplaner":{"items":{"$ref":"#/components/schemas/PlanningPlan"},"type":"array","title":"Lokalplaner"},"lokalplan_forslag":{"items":{"$ref":"#/components/schemas/PlanningPlan"},"type":"array","title":"Lokalplan Forslag"},"kommuneplanrammer":{"items":{"$ref":"#/components/schemas/PlanningPlan"},"type":"array","title":"Kommuneplanrammer"},"assessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assessed At"}},"type":"object","required":["version"],"title":"PropertyPlanningResponse","description":"Planning status at the property's coordinate (Plandata.dk point lookup)."},"PropertyPreliminaryValuation":{"properties":{"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"The valuation year"},"property_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Property Value","description":"Foreløbig ejendomsværdi in DKK (0 for business properties, which get a land value only)"},"land_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Land Value","description":"Foreløbig grundværdi in DKK"},"land_value_housing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Land Value Housing","description":"Land and forestry: grundværdi of the dwelling"},"production_land_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Production Land Value","description":"Land and forestry: grundværdi of production land"},"other_land_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Other Land Value","description":"Land and forestry: grundværdi of other land"},"legal_category_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Legal Category Code"},"legal_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Category","description":"Juridisk kategori, e.g. 'Ejerbolig til vurdering i lige år'"},"legal_subcategory_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Legal Subcategory Code"},"legal_subcategory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Subcategory"},"vurderingsejendom_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vurderingsejendom Id"},"bfe_numbers":{"items":{"type":"integer"},"type":"array","title":"Bfe Numbers","description":"Every BFE number the valuation covers"},"release_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Date","description":"Date of Vurderingsstyrelsen's data release (YYYY-MM-DD)"}},"type":"object","title":"PropertyPreliminaryValuation","description":"One preliminary valuation (foreløbig vurdering) from Vurderingsstyrelsen's\npublished files: homes 2022 and 2024, business and agricultural land\nvalues 2023 and 2025 (their ejendomsværdi is 0)."},"PropertyScreenFilters":{"properties":{"postal_codes":{"items":{"type":"string"},"type":"array","maxItems":100,"title":"Postal Codes"},"municipality_codes":{"items":{"type":"string"},"type":"array","maxItems":99,"title":"Municipality Codes","description":"Resolved to the municipality's postal codes"},"region_codes":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Region Codes","description":"Resolved to the region's postal codes"},"geo":{"anyOf":[{"$ref":"#/components/schemas/GeoRadius"},{"type":"null"}]},"building_area":{"anyOf":[{"$ref":"#/components/schemas/NumericRange"},{"type":"null"}],"description":"Matches properties with at least one building whose total area (m²) is in the range. Condominium unit areas are not covered."},"has_flood_risk":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Flood Risk","description":"At least elevated flood exposure per Klimadatastyrelsen's DHM models (cloudburst depression or storm surge at 3 m or less)"},"energy_classifications":{"items":{"type":"string"},"type":"array","maxItems":7,"title":"Energy Classifications","description":"Current energy label letters to include (A-G; prefix matched)"},"has_poor_energy_label":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Poor Energy Label","description":"Current energy label D, E, F or G"},"zone_statuses":{"items":{"type":"string"},"type":"array","maxItems":3,"title":"Zone Statuses","description":"Planzone: byzone, landzone and/or sommerhusomraade"},"exclude_advertising_protected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Advertising Protected","description":"Exclude properties whose only active company owners have CVR advertising protection. Required when results are used for direct marketing."}},"type":"object","title":"PropertyScreenFilters","description":"Filters for POST /v1/screen/properties. Results are always scoped to\nproperties with at least one active company ownership."},"PropertyScreenItem":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"building_area":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Building Area","description":"Largest building's total area (m²)"},"flood_flagged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Flood Flagged"},"energy_classification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Energy Classification"},"zone_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone Status"},"owners":{"items":{"$ref":"#/components/schemas/PropertyScreenOwner"},"type":"array","title":"Owners","description":"Active company owners"}},"type":"object","required":["bfe_number"],"title":"PropertyScreenItem"},"PropertyScreenMeta":{"properties":{"limit":{"type":"integer","title":"Limit"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["limit","has_more"],"title":"PropertyScreenMeta"},"PropertyScreenOwner":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["cvr"],"title":"PropertyScreenOwner"},"PropertyScreenRequest":{"properties":{"filters":{"$ref":"#/components/schemas/PropertyScreenFilters"},"cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cursor","description":"bfe_number cursor from the previous page's meta.next_cursor"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":25}},"type":"object","required":["filters"],"title":"PropertyScreenRequest"},"PropertyScreenResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PropertyScreenItem"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/PropertyScreenMeta"}},"type":"object","required":["data","meta"],"title":"PropertyScreenResponse"},"PropertySummary":{"properties":{"count":{"type":"integer","title":"Count","description":"Total number of active property ownerships","default":0},"historic_count":{"type":"integer","title":"Historic Count","description":"Number of historic (ended) property ownerships","default":0},"total_area_sqm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Area Sqm","description":"Total building area in square meters"},"residential_area_sqm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Residential Area Sqm","description":"Residential area in square meters"},"commercial_area_sqm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commercial Area Sqm","description":"Commercial area in square meters"},"land_area_sqm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Land Area Sqm","description":"Total land area in square meters"},"property_types":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Property Types","description":"Count by property type"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"When the summary was last computed"}},"type":"object","title":"PropertySummary","description":"Aggregated property ownership summary for a company."},"PropertyTransactionResponse":{"properties":{"total_purchase_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Purchase Price"},"cash_purchase_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cash Purchase Price"},"purchase_agreement_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Purchase Agreement Date"},"transfer_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Transfer Date"},"currency_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency Code"},"buildings_included":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buildings Included"}},"type":"object","title":"PropertyTransactionResponse","description":"Transaction details for API response."},"PropertyTransferResponse":{"properties":{"bfe_number":{"type":"integer","title":"Bfe Number"},"takeover_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Takeover Date"},"registration_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Registration Date"},"transfer_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Method"},"conditional":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Conditional"},"deadline_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deadline Date"},"status":{"type":"string","title":"Status"},"rolled_back":{"type":"boolean","title":"Rolled Back","default":false},"transaction":{"anyOf":[{"$ref":"#/components/schemas/PropertyTransactionResponse"},{"type":"null"}]},"bundle":{"anyOf":[{"items":{"$ref":"#/components/schemas/BundleProperty"},"type":"array"},{"type":"null"}],"title":"Bundle"}},"type":"object","required":["bfe_number","status"],"title":"PropertyTransferResponse","description":"Transfer event for API response, with denormalized transaction."},"PropertyValuation":{"properties":{"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"The year the valuation applies to"},"property_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Property Value","description":"Ejendomsværdi in DKK; 0 means the register holds no value for that year"},"land_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Land Value","description":"Grundværdi in DKK"},"assessed_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assessed Area","description":"Vurderet areal in m²"},"legal_category_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Legal Category Code"},"legal_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Category","description":"Juridisk kategori, e.g. 'Ejerbolig til vurdering i lige år'"},"legal_subcategory_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Legal Subcategory Code"},"legal_subcategory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Subcategory"},"usage_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usage Code","description":"Benyttelseskode"},"change_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Code","description":"Ændringskode (type of valuation or deciding authority)"},"change_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Date","description":"Date of the latest valid valuation"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"When the valuation was last updated in the register"},"apartments_included":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Apartments Included","description":"Number of flats valued together with the property"},"valuation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Valuation Id"},"vurderingsejendom_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vurderingsejendom Id"},"moderejendom_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Moderejendom Id"}},"type":"object","title":"PropertyValuation","description":"One public property valuation (offentlig ejendomsvurdering, Datafordeler VUR)."},"PropertyValuationResponse":{"properties":{"latest":{"anyOf":[{"$ref":"#/components/schemas/PropertyValuation"},{"type":"null"}],"description":"The newest final valuation; null when only preliminary valuations exist"},"history":{"items":{"$ref":"#/components/schemas/PropertyValuation"},"type":"array","title":"History"},"count":{"type":"integer","title":"Count"},"source":{"type":"string","title":"Source","description":"Attribution the data licence requires","default":"Vurderingsstyrelsen (Ejendomsvurdering via Datafordeler, CC BY 4.0)"},"preliminary":{"items":{"$ref":"#/components/schemas/PropertyPreliminaryValuation"},"type":"array","title":"Preliminary","description":"Current preliminary valuations, newest year first"},"preliminary_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preliminary Source","description":"Attribution for the preliminary valuations"}},"type":"object","required":["history","count"],"title":"PropertyValuationResponse","description":"Public valuations of a property. Final valuations newest first\n(old-system valuations to 2020, new-system valuations of homes as they\nbecome final) and the current preliminary valuations."},"RecordDetail":{"properties":{"id":{"type":"string","title":"Id"},"cvr":{"type":"string","title":"Cvr"},"company":{"$ref":"#/components/schemas/CompanySnapshot"},"status":{"type":"string","enum":["ny","kontaktet","dialog","vundet","tabt"],"title":"Status"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Email"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"next_followup_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Followup At"},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"open_followup_count":{"type":"integer","title":"Open Followup Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"activities":{"items":{"$ref":"#/components/schemas/Activity"},"type":"array","title":"Activities","default":[]}},"type":"object","required":["id","cvr","company","status","created_at"],"title":"RecordDetail"},"RecordSummary":{"properties":{"id":{"type":"string","title":"Id"},"cvr":{"type":"string","title":"Cvr"},"company":{"$ref":"#/components/schemas/CompanySnapshot"},"status":{"type":"string","enum":["ny","kontaktet","dialog","vundet","tabt"],"title":"Status"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Email"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"next_followup_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Followup At"},"last_activity_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Activity At"},"open_followup_count":{"type":"integer","title":"Open Followup Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","cvr","company","status","created_at"],"title":"RecordSummary","description":"Row in the working-list table view."},"RecordsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RecordSummary"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","default":{}}},"type":"object","required":["data"],"title":"RecordsResponse"},"Region":{"properties":{"code":{"type":"string","title":"Code","description":"Region code","examples":["1084"]},"name":{"type":"string","title":"Name","description":"Region name","examples":["Region Hovedstaden"]}},"type":"object","required":["code","name"],"title":"Region","description":"Region data."},"RegionListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Region"},"type":"array","title":"Data","description":"List of regions"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data","meta"],"title":"RegionListResponse","description":"Response with list of regions."},"ReportFieldSelection":{"properties":{"basic_data":{"items":{"type":"string"},"type":"array","title":"Basic Data","description":"Basic company data fields"},"management_ownership":{"items":{"type":"string"},"type":"array","title":"Management Ownership","description":"Management and ownership data fields"},"financial_data":{"items":{"type":"string"},"type":"array","title":"Financial Data","description":"Financial statement fields"},"ratios":{"items":{"type":"string"},"type":"array","title":"Ratios","description":"Financial ratio fields"},"property_data":{"items":{"type":"string"},"type":"array","title":"Property Data","description":"Property data fields"},"livestock":{"items":{"type":"string"},"type":"array","title":"Livestock","description":"CHR livestock fields (herd count, species, total animals) from Det Centrale Husdyrbrugsregister"},"contact_enrichment":{"items":{"type":"string"},"type":"array","title":"Contact Enrichment","description":"Enriched contact fields (discovered website, contact people, emails, phones) from our website-discovery pipeline"},"cds":{"items":{"type":"string"},"type":"array","title":"Cds","description":"CDS score and credit recommendation fields (score, rating, confidence, credit limit, payment terms)"},"tenders":{"items":{"type":"string"},"type":"array","title":"Tenders","description":"Public procurement fields (tenders won, latest tender) computed from TED/udbud.dk award notices"},"financial_history":{"type":"boolean","title":"Financial History","description":"Include the full financial-statement history in the export: a separate Excel file in long format, one row per company per fiscal year, covering every year on record (up to ~13) with the selected financial and ratio columns (raw reported figures, not recomputed). The download then becomes a ZIP holding the main file and the history file.","default":false}},"type":"object","title":"ReportFieldSelection","description":"Which fields to include in the report."},"RevenueTrendInsight":{"properties":{"trend":{"type":"string","title":"Trend","description":"Trend category: growing, stable, declining"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage","description":"CAGR percentage (e.g., 8 for 8%)"},"years_analyzed":{"type":"integer","title":"Years Analyzed","description":"Number of years used in calculation"}},"type":"object","required":["trend","years_analyzed"],"title":"RevenueTrendInsight","description":"Revenue trend insight computed from financial history."},"Rubrik":{"properties":{"key":{"type":"string","title":"Key","description":"Statstidende message type key","examples":["14a1d71d-f215-58e5-ade0-214f90482cdc"]},"section":{"type":"string","title":"Section","description":"Section in Statstidende","examples":["Konkursboer"]},"name":{"type":"string","title":"Name","description":"Rubrik name in Danish","examples":["Konkursdekret"]},"name_en":{"type":"string","title":"Name En","examples":["Bankruptcy decree"]},"event_type":{"type":"string","title":"Event Type","description":"financial_distress or corporate_announcement","examples":["financial_distress"]}},"type":"object","required":["key","section","name","name_en","event_type"],"title":"Rubrik"},"RubrikCatalogResponse":{"properties":{"rubrikker":{"items":{"$ref":"#/components/schemas/Rubrik"},"type":"array","title":"Rubrikker"}},"type":"object","required":["rubrikker"],"title":"RubrikCatalogResponse"},"SavedScreenCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"filters":{"$ref":"#/components/schemas/ScreenFilters"},"webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id","description":"Webhook (created via /v1/webhooks) that receives screen_entered/screen_left events when companies start or stop matching this screen. Omit to save the screen without notifications."}},"type":"object","required":["name","filters"],"title":"SavedScreenCreate","description":"Request body for POST /v1/screen/saved."},"SavedScreenListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SavedScreenResponse"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"SavedScreenListResponse"},"SavedScreenResponse":{"properties":{"screen_id":{"type":"string","title":"Screen Id"},"name":{"type":"string","title":"Name"},"filters":{"$ref":"#/components/schemas/ScreenFilters"},"webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id"},"active":{"type":"boolean","title":"Active"},"matched_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matched Count","description":"Match count at the last evaluation"},"last_evaluated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Evaluated At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["screen_id","name","filters","active","created_at","updated_at"],"title":"SavedScreenResponse"},"SavedScreenUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"filters":{"anyOf":[{"$ref":"#/components/schemas/ScreenFilters"},{"type":"null"}]},"webhook_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Id"},"clear_webhook":{"type":"boolean","title":"Clear Webhook","description":"Set true to detach the webhook","default":false},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},"type":"object","title":"SavedScreenUpdate","description":"Request body for PATCH /v1/screen/saved/{screen_id}. Only provided\nfields change; updating filters re-baselines the match snapshot (no\nevents are emitted for the reset)."},"ScrapedContactData":{"properties":{"people":{"items":{"$ref":"#/components/schemas/ScrapedPerson"},"type":"array","title":"People","description":"Key contacts / team members"},"phone_numbers":{"items":{"type":"string"},"type":"array","title":"Phone Numbers","description":"General phone numbers (not tied to a person)"},"email_addresses":{"items":{"type":"string"},"type":"array","title":"Email Addresses","description":"General email addresses (not tied to a person)"},"social_media":{"anyOf":[{"$ref":"#/components/schemas/ScrapedSocialMedia"},{"type":"null"}],"description":"Social media profile links"},"physical_addresses":{"items":{"type":"string"},"type":"array","title":"Physical Addresses","description":"Physical addresses as found on website (free text)"}},"type":"object","title":"ScrapedContactData","description":"Structured contact data extracted from a company website."},"ScrapedPerson":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Person's full name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Job title / role"},"role_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Category","description":"Normalized role category classified from the title (management, sales, marketing, it, hr, finance, operations, procurement, customer_service). Null when the title has no confident mapping."},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Direct phone number"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email address"},"linkedin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin","description":"LinkedIn profile URL"}},"type":"object","title":"ScrapedPerson","description":"A person extracted from a company website."},"ScrapedSocialMedia":{"properties":{"linkedin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin","description":"LinkedIn profile/company URL"},"facebook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook","description":"Facebook page URL"},"instagram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram","description":"Instagram profile URL"},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter","description":"X/Twitter profile URL"},"youtube":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Youtube","description":"YouTube channel URL"},"other":{"items":{"type":"string"},"type":"array","title":"Other","description":"Other social media URLs"}},"type":"object","title":"ScrapedSocialMedia","description":"Social media links extracted from a company website."},"ScreenAggregateMeta":{"properties":{"groups":{"type":"integer","title":"Groups"},"truncated":{"type":"boolean","title":"Truncated","description":"True when more than 100 groups matched"}},"type":"object","required":["groups","truncated"],"title":"ScreenAggregateMeta"},"ScreenAggregateRequest":{"properties":{"filters":{"$ref":"#/components/schemas/ScreenFilters"},"group_by":{"$ref":"#/components/schemas/AggregateDimension"},"metrics":{"items":{"$ref":"#/components/schemas/FinancialMetric"},"type":"array","maxItems":3,"title":"Metrics","description":"Up to 3 key figures to sum and average per group. Companies without the figure are excluded from that figure's sum/avg (but still counted)."}},"type":"object","required":["filters","group_by"],"title":"ScreenAggregateRequest","description":"Request body for POST /v1/screen/aggregate."},"ScreenAggregateResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AggregateBucket"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/ScreenAggregateMeta"}},"type":"object","required":["data","meta"],"title":"ScreenAggregateResponse"},"ScreenCountRequest":{"properties":{"filters":{"$ref":"#/components/schemas/ScreenFilters"},"sort":{"anyOf":[{"$ref":"#/components/schemas/ScreenSort"},{"type":"null"}],"description":"Optional: when given, the count is restricted to companies where the sort field is present — the same restriction a sorted /screen listing applies — so the count matches what a sorted listing can actually reach."}},"type":"object","required":["filters"],"title":"ScreenCountRequest","description":"Request body for POST /v1/screen/count."},"ScreenCountResponse":{"properties":{"count":{"type":"integer","title":"Count","description":"Number of companies matching the filters"}},"type":"object","required":["count"],"title":"ScreenCountResponse"},"ScreenExportRequest":{"properties":{"filters":{"$ref":"#/components/schemas/ScreenFilters"},"fields":{"$ref":"#/components/schemas/ReportFieldSelection","description":"Excel columns to include, by field category — the same catalog as the lead-list generator"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name","description":"Report name"},"sort":{"anyOf":[{"$ref":"#/components/schemas/ScreenSort"},{"type":"null"}],"description":"Row order in the produced file. Defaults to gross profit, highest first; companies without the sort metric come last."},"locale":{"type":"string","pattern":"^(da|en)$","title":"Locale","description":"File and email language","default":"da"}},"type":"object","required":["filters","fields","name"],"title":"ScreenExportRequest","description":"Request body for POST /v1/screen/export."},"ScreenExportResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Report request id"},"status":{"type":"string","title":"Status"},"matched_count":{"type":"integer","title":"Matched Count","description":"Companies included in the export"}},"type":"object","required":["id","status","matched_count"],"title":"ScreenExportResponse"},"ScreenExportStatusResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Report request id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status","description":"queued | processing | completed | failed"},"requested_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Count"},"row_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Row Count"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","name","status","created_at"],"title":"ScreenExportStatusResponse","description":"One row on the screening exports page (GET /v1/screen/exports)."},"ScreenFilters":{"properties":{"industry_codes":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Industry Codes","description":"DB07 industry codes, 2-6 digits. Codes shorter than 6 digits match as prefixes: `47` matches every retail code. Matches primary or secondary industry."},"company_types":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Company Types","description":"Company type codes, e.g. A/S, ApS, ENK"},"statuses":{"items":{"type":"string"},"type":"array","maxItems":4,"title":"Statuses","description":"Company statuses to include. Defaults to active companies only. Valid values: active, dissolved, under_bankruptcy, liquidation."},"founded":{"anyOf":[{"$ref":"#/components/schemas/DateRange"},{"type":"null"}],"description":"Founding date range (inclusive)"},"municipality_codes":{"items":{"type":"string"},"type":"array","maxItems":99,"title":"Municipality Codes","description":"Municipality codes"},"postal_codes":{"items":{"type":"string"},"type":"array","maxItems":100,"title":"Postal Codes","description":"Postal codes"},"region_codes":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Region Codes","description":"Region codes (resolved to the region's municipalities)"},"geo":{"anyOf":[{"$ref":"#/components/schemas/GeoRadius"},{"type":"null"}],"description":"Circular geographic area around a coordinate"},"employees":{"anyOf":[{"$ref":"#/components/schemas/NumericRange"},{"type":"null"}],"description":"Employee count range. Uses the best known headcount (max of CVR-reported and annual-report FTE)."},"financials":{"additionalProperties":{"$ref":"#/components/schemas/NumericRange"},"propertyNames":{"$ref":"#/components/schemas/FinancialMetric"},"type":"object","title":"Financials","description":"Key figure ranges, e.g. `{\"equity_ratio\": {\"min\": 0.15}}`. Valid keys: revenue, gross_profit, operating_profit, profit_loss, equity, total_assets, equity_ratio, current_ratio, return_on_equity, profit_margin, revenue_growth, gross_profit_growth, equity_growth. Amounts in DKK; ratios and growth rates as fractions. Note that most small companies (reporting class B) do not publish revenue, only gross profit. A company only matches a metric filter if its latest annual report contains that metric."},"reporting_classes":{"items":{"type":"string"},"type":"array","maxItems":4,"title":"Reporting Classes","description":"Reporting classes (regnskabsklasse) to include: A, B, C, D"},"financial_period_end_after":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Financial Period End After","description":"Only match companies whose latest annual report period ends on or after this date (freshness guard)"},"late_filings":{"anyOf":[{"$ref":"#/components/schemas/NumericRange"},{"type":"null"}],"description":"Number of the last 5 annual reports filed after the statutory deadline (ÅRL § 138). Only companies with computed reporting signals match."},"auditor_changes":{"anyOf":[{"$ref":"#/components/schemas/NumericRange"},{"type":"null"}],"description":"Auditor firm changes across the last 5 annual reports"},"has_overdue_filing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Overdue Filing","description":"Active companies whose next expected annual report has passed its statutory deadline without being published"},"has_going_concern":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Going Concern","description":"The latest report carries a going concern emphasis from the auditor"},"has_qualified_opinion":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Qualified Opinion","description":"The latest auditor opinion is not unqualified"},"cds_score":{"anyOf":[{"$ref":"#/components/schemas/NumericRange"},{"type":"null"}],"description":"CDS (CompanyData Score) range, 0-100. Only companies with a computed score match."},"cds_ratings":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Cds Ratings","description":"CDS rating buckets to include: excellent, good, moderate, high_risk, critical"},"has_phone":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Phone","description":"Company has a phone number"},"has_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Email","description":"Company has an email address"},"has_website":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Website","description":"Company has a website"},"has_properties":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Properties","description":"Company owns properties"},"property_area":{"anyOf":[{"$ref":"#/components/schemas/NumericRange"},{"type":"null"}],"description":"Total building area (m²) across owned properties"},"property_zones":{"items":{"type":"string"},"type":"array","maxItems":3,"title":"Property Zones","description":"Planzone of owned properties: byzone, landzone and/or sommerhusomraade. Matches companies owning at least one property in any selected zone."},"has_flood_risk_properties":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Flood Risk Properties","description":"Company owns at least one property with elevated flood risk (in a cloudburst depression or flooded at a storm surge of 3 m or less, per Klimadatastyrelsen's DHM models)"},"has_poor_energy_label":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Poor Energy Label","description":"Company owns at least one property whose current energy label is D, E, F or G (per Energistyrelsen's EMOData register)"},"auditor_cvrs":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Auditor Cvrs","description":"Companies whose current registered auditor is one of these audit firms (CVR numbers)"},"contact_role_categories":{"items":{"type":"string"},"type":"array","maxItems":9,"title":"Contact Role Categories","description":"Companies with an enriched contact person in any of these role categories (management, sales, marketing, it, hr, finance, operations, procurement, customer_service). Sourced from the company's own website."},"has_livestock":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Livestock","description":"Company has at least one active livestock herd in CHR. Companies with a CHR marketing protection are excluded."},"livestock_species_codes":{"items":{"type":"integer"},"type":"array","maxItems":20,"title":"Livestock Species Codes","description":"CHR species (dyreart) codes, e.g. 12=Kvæg, 15=Svin, 13=Får. Matches companies with at least one active herd of any selected species. Implies the CHR marketing protection exclusion."},"exclude_advertising_protected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Advertising Protected","description":"Exclude companies with CVR advertising protection (reklamebeskyttelse). Required when results are used for direct marketing."}},"type":"object","title":"ScreenFilters","description":"Screening criteria. All given filters are combined with AND.\n\nAt least one filter beyond `statuses` must be set."},"ScreenItem":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type"},"industry":{"anyOf":[{"$ref":"#/components/schemas/ScreenItemIndustry"},{"type":"null"}]},"address":{"anyOf":[{"$ref":"#/components/schemas/ScreenItemAddress"},{"type":"null"}]},"location":{"anyOf":[{"$ref":"#/components/schemas/ScreenItemLocation"},{"type":"null"}],"description":"Geocoded coordinates of the registered address (WGS84). Absent when the address could not be geocoded or is withheld."},"founded_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Founded Date","description":"Company founding date"},"employees":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employees","description":"Best known headcount (CVR or annual report)"},"financials":{"anyOf":[{"$ref":"#/components/schemas/ScreenItemFinancials"},{"type":"null"}],"description":"Latest annual report key figures, when available"},"cds":{"anyOf":[{"$ref":"#/components/schemas/ScreenItemCDS"},{"type":"null"}],"description":"CDS score and rating, when computed"}},"type":"object","required":["cvr","name","status"],"title":"ScreenItem"},"ScreenItemAddress":{"properties":{"municipality_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Code"},"municipality_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Name"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"postal_district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal District"}},"type":"object","title":"ScreenItemAddress"},"ScreenItemCDS":{"properties":{"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score","description":"CDS score, 0-100"},"rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rating","description":"excellent, good, moderate, high_risk or critical"}},"type":"object","title":"ScreenItemCDS"},"ScreenItemFinancials":{"properties":{"period_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period End","description":"Annual report period end"},"reporting_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reporting Class","description":"Regnskabsklasse (A/B/C/D)"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","description":"Currency for amounts"},"is_consolidated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Consolidated","description":"Whether the report is consolidated (koncernregnskab)"},"revenue":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue"},"gross_profit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Profit"},"operating_profit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Profit"},"profit_loss":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Loss"},"equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity"},"total_assets":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Assets"},"equity_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity Ratio","description":"Soliditetsgrad as a fraction"},"current_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio"},"return_on_equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Return On Equity"},"profit_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Margin"},"revenue_growth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Growth","description":"YoY growth as a fraction"},"gross_profit_growth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Profit Growth","description":"YoY growth as a fraction"},"equity_growth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity Growth","description":"YoY growth as a fraction"}},"type":"object","title":"ScreenItemFinancials","description":"Key figures from the company's most recent annual report. Only\npublished figures are present; most reporting class B companies publish\ngross profit but not revenue."},"ScreenItemIndustry":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"Primary DB07 industry code"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"Primary industry description"}},"type":"object","title":"ScreenItemIndustry"},"ScreenItemLocation":{"properties":{"lat":{"type":"number","title":"Lat","description":"Latitude (WGS84)"},"lng":{"type":"number","title":"Lng","description":"Longitude (WGS84)"}},"type":"object","required":["lat","lng"],"title":"ScreenItemLocation","description":"WGS84 coordinates of the company's registered address."},"ScreenMeta":{"properties":{"limit":{"type":"integer","title":"Limit"},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page exists"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Cursor for the next page (absent on the last page)"},"preview":{"type":"boolean","title":"Preview","description":"True for the free preview on companydata.dk (the first rows only, no pagination). Always false for API keys.","default":false},"preview_withheld":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Withheld","description":"Why a preview returned no rows: `pro_filters` (the filters use Pro-only criteria) or `daily_limit` (the day's previews are used)."}},"type":"object","required":["limit","has_more"],"title":"ScreenMeta"},"ScreenRequest":{"properties":{"filters":{"$ref":"#/components/schemas/ScreenFilters"},"sort":{"anyOf":[{"$ref":"#/components/schemas/ScreenSort"},{"type":"null"}],"description":"Result ordering. Default: stable register order."},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor","description":"Opaque pagination cursor from a previous response's meta.next_cursor. Filters and sort must be unchanged between pages."},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","description":"Results per page (1-100)","default":25}},"type":"object","required":["filters"],"title":"ScreenRequest","description":"Request body for POST /v1/screen."},"ScreenResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ScreenItem"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/ScreenMeta"}},"type":"object","required":["data","meta"],"title":"ScreenResponse"},"ScreenSort":{"properties":{"field":{"type":"string","title":"Field","description":"Sort field: any financial metric name, or employees, founded_date, period_end"},"direction":{"type":"string","title":"Direction","description":"asc or desc","default":"desc"}},"type":"object","required":["field"],"title":"ScreenSort","description":"Result ordering. Sorting on a field implicitly restricts results to\ncompanies where that field is present (e.g. sorting by revenue only\nreturns companies with a known revenue)."},"SecondaryIndustry":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"6-digit Danish industry code (DB07)","examples":["620100"]},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"Industry description in Danish"}},"type":"object","title":"SecondaryIndustry","description":"Secondary industry classification."},"SetCvrFilterRequest":{"properties":{"cvrs":{"items":{"type":"string"},"type":"array","title":"Cvrs","description":"Complete list of 8-digit CVR numbers to monitor. Replaces any existing filter. Maximum 50,000 entries per webhook. Duplicates are silently de-duplicated. Pass an empty list to disable the filter without deleting it.","examples":[["12345678","87654321","11223344"]]},"event_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EventType"},"type":"array"},{"type":"null"}],"title":"Event Types","description":"Event types to receive for the CVRs in this filter. Omit or set to `null` to receive all event types."}},"type":"object","required":["cvrs"],"title":"SetCvrFilterRequest","description":"Request body for `PUT /v1/webhooks/{webhook_id}/cvr-filter`."},"SimilarCompaniesResponse":{"properties":{"similar_companies":{"items":{"$ref":"#/components/schemas/SimilarCompany"},"type":"array","title":"Similar Companies"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","default":{}}},"type":"object","required":["similar_companies"],"title":"SimilarCompaniesResponse","description":"Response for similar companies endpoint."},"SimilarCompany":{"properties":{"cvr":{"type":"string","title":"Cvr"},"name":{"type":"string","title":"Name"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"industry_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Code"},"employees":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employees"},"municipality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality"},"municipality_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality Code"},"distance_meters":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance Meters","description":"Distance from source company in meters"}},"type":"object","required":["cvr","name"],"title":"SimilarCompany","description":"A company similar to the requested one."},"SingleRecordResponse":{"properties":{"data":{"$ref":"#/components/schemas/RecordDetail"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","default":{}}},"type":"object","required":["data"],"title":"SingleRecordResponse"},"SmileyEstablishment":{"properties":{"navnelbnr":{"type":"string","title":"Navnelbnr"},"pnr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pnr"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"industry_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry Text"},"business_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Type"},"latest_result":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Result"},"latest_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Date"},"inspections":{"items":{"$ref":"#/components/schemas/SmileyInspection"},"type":"array","title":"Inspections"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["navnelbnr"],"title":"SmileyEstablishment"},"SmileyInspection":{"properties":{"result":{"type":"integer","title":"Result","description":"Kontrolresultat 1-4 (1=ingen anmærkninger, 2=indskærpelse, 3=påbud/forbud, 4=bødeforelæg m.v.)"},"date":{"type":"string","format":"date-time","title":"Date"}},"type":"object","required":["result","date"],"title":"SmileyInspection"},"StockCandle":{"properties":{"date":{"type":"string","title":"Date","description":"Trading day (YYYY-MM-DD)"},"open":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Open"},"high":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"High"},"low":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Low"},"close":{"type":"number","title":"Close"},"volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Volume"}},"type":"object","required":["date","close"],"title":"StockCandle","description":"One daily OHLCV candle."},"StockListing":{"properties":{"symbol":{"type":"string","title":"Symbol","description":"Primary share class ticker","examples":["NOVO-B.CO"]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","examples":["DKK"]},"exchange":{"type":"string","title":"Exchange","description":"Exchange MIC","default":"XCSE"}},"type":"object","required":["symbol"],"title":"StockListing","description":"Stock exchange listing hint, stamped by the sync_stock_prices job.\n\nPresence tells clients that /companies/{cvr}/stock-prices has data."},"StockPricesResponse":{"properties":{"symbol":{"type":"string","title":"Symbol","description":"Ticker symbol","examples":["NOVO-B.CO"]},"exchange":{"type":"string","title":"Exchange","description":"Exchange MIC","examples":["XCSE"]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","examples":["DKK"]},"candles":{"items":{"$ref":"#/components/schemas/StockCandle"},"type":"array","title":"Candles"},"synced_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Synced At","description":"When the candles were last refreshed"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","default":{}}},"type":"object","required":["symbol","exchange","candles"],"title":"StockPricesResponse","description":"Daily share price history for a listed company (primary share class)."},"TestWebhookResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"TestWebhookResponse","description":"Response for webhook test."},"TimelineEvent":{"properties":{"event_type":{"type":"string","title":"Event Type","description":"Event type identifier","examples":["director_joined","director_left","owner_changed","board_joined","board_left","status_changed","founded","name_changed"]},"date":{"type":"string","format":"date-time","title":"Date","description":"Date when the event occurred"},"title":{"type":"string","title":"Title","description":"Short human-readable title","examples":["Ny direktør tilføjet","Ejerandel ændret"]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Additional event details"},"person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Name","description":"Name of person involved (if applicable)"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Name of company involved (if applicable)"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR of related company (if applicable)"},"ownership_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ownership Percent","description":"Ownership percentage for ownership events"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"Role/function for role change events"},"old_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Old Name","description":"Previous company name (for name_changed events)"},"new_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Name","description":"New company name (for name_changed events)"},"is_end_event":{"type":"boolean","title":"Is End Event","description":"Whether this marks the end of something (e.g., director left)","default":false},"unit_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Number","description":"Participant unit number for person events (links to the participant page)"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Extra type-specific fields (e.g. financial figures for regnskab_published, tender title/buyer/value for tender_award)"}},"type":"object","required":["event_type","date","title"],"title":"TimelineEvent","description":"A single event in the company's history."},"UnitInfo":{"properties":{"usage_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usage Code"},"total_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Area"},"residential_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Residential Area"},"commercial_area":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commercial Area"},"rooms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rooms"},"dwelling_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dwelling Type"},"heating_installation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heating Installation"},"heating_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heating Source"}},"type":"object","title":"UnitInfo","description":"Unit (enhed) data from BBR enrichment."},"UpdateRecordRequest":{"properties":{"status":{"anyOf":[{"type":"string","enum":["ny","kontaktet","dialog","vundet","tabt"]},{"type":"null"}],"title":"Status"},"owner_email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Owner Email"}},"type":"object","title":"UpdateRecordRequest","description":"Patch a record's status and/or owner (owner reassignment is Team-only\nand enforced in the service against org membership)."},"UpdateWebhookRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"New label for the webhook."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"New HTTPS endpoint URL."},"event_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EventType"},"type":"array"},{"type":"null"}],"title":"Event Types","description":"Replace the list of event types this webhook receives."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers","description":"Replace the custom headers sent with every delivery."},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active","description":"Enable or disable delivery. Setting `true` on an auto-disabled webhook re-enables it and resets the consecutive-failure counter."}},"type":"object","title":"UpdateWebhookRequest","description":"Request to update a webhook. Only provided fields are changed."},"UsageStats":{"properties":{"requests_this_month":{"type":"integer","title":"Requests This Month","description":"Number of requests made this month with this API key"},"requests_limit":{"type":"integer","title":"Requests Limit","description":"Monthly request limit of the plan"},"credits_remaining":{"type":"integer","title":"Credits Remaining","description":"Purchased credits still unspent. Credits are pooled per organisation and are drawn on automatically once the monthly limit is reached.","default":0},"requests_remaining":{"type":"integer","title":"Requests Remaining","description":"Requests the organisation can still make this month: what is left of the plan limit plus every unspent credit.","default":0},"last_request_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Request At","description":"Timestamp of last request"}},"type":"object","required":["requests_this_month","requests_limit"],"title":"UsageStats"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookDeliveriesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/WebhookDeliveryItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"WebhookDeliveriesResponse","description":"Response for webhook deliveries."},"WebhookDeliveryItem":{"properties":{"delivery_id":{"type":"string","title":"Delivery Id","description":"Unique delivery ID (also sent in `X-Companydata-Delivery`)."},"event_id":{"type":"string","title":"Event Id","description":"The change event this delivery was for."},"event_type":{"$ref":"#/components/schemas/EventType","description":"The type of change event."},"cvr":{"type":"string","title":"Cvr","description":"The CVR number of the company that changed."},"company_name":{"type":"string","title":"Company Name","description":"Company name at the time the event was generated."},"status":{"$ref":"#/components/schemas/DeliveryStatus","description":"`pending` (queued/retrying), `sent` (delivered), `failed` (gave up after retries)."},"response_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Code","description":"HTTP status code returned by your endpoint, if a response was received."},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error description if delivery failed (timeout, connection error, non-2xx)."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When this delivery was queued."},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At","description":"When the final attempt was made (set on success or final failure)."}},"type":"object","required":["delivery_id","event_id","event_type","cvr","company_name","status","created_at"],"title":"WebhookDeliveryItem","description":"One delivery attempt in a webhook's history."},"WebhookResponse":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id","description":"Unique identifier for this webhook."},"name":{"type":"string","title":"Name","description":"Human-readable label."},"url":{"type":"string","title":"Url","description":"HTTPS endpoint that receives deliveries."},"active":{"type":"boolean","title":"Active","description":"Whether this webhook is currently delivering events."},"event_types":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array","title":"Event Types","description":"Event types this webhook receives."},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Custom headers added to every delivery."},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At","description":"Timestamp of the most recent successful (2xx) delivery."},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At","description":"Timestamp of the most recent failed delivery attempt."},"consecutive_failures":{"type":"integer","title":"Consecutive Failures","description":"Number of consecutive failed deliveries. Reset to 0 on the next 2xx response. Reaching 10 auto-disables the webhook.","default":0},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disabled Reason","description":"Set when the webhook is auto-disabled. `null` otherwise."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the webhook was created."}},"type":"object","required":["webhook_id","name","url","active","event_types","headers","created_at"],"title":"WebhookResponse","description":"A webhook configuration. The secret is never returned after creation."},"WebhookWithSecret":{"properties":{"webhook_id":{"type":"string","title":"Webhook Id","description":"Unique identifier for this webhook."},"name":{"type":"string","title":"Name","description":"Human-readable label."},"url":{"type":"string","title":"Url","description":"HTTPS endpoint that receives deliveries."},"active":{"type":"boolean","title":"Active","description":"Whether this webhook is currently delivering events."},"event_types":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array","title":"Event Types","description":"Event types this webhook receives."},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Custom headers added to every delivery."},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At","description":"Timestamp of the most recent successful (2xx) delivery."},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At","description":"Timestamp of the most recent failed delivery attempt."},"consecutive_failures":{"type":"integer","title":"Consecutive Failures","description":"Number of consecutive failed deliveries. Reset to 0 on the next 2xx response. Reaching 10 auto-disables the webhook.","default":0},"disabled_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disabled Reason","description":"Set when the webhook is auto-disabled. `null` otherwise."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the webhook was created."},"secret":{"type":"string","title":"Secret","description":"HMAC-SHA256 signing secret. Used to verify the `X-Companydata-Signature` header on every incoming delivery. **Store this immediately — it is never returned again.**"}},"type":"object","required":["webhook_id","name","url","active","event_types","headers","created_at","secret"],"title":"WebhookWithSecret","description":"A webhook configuration including the secret. Only returned on creation."},"WebhooksListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/WebhookResponse"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","required":["data","meta"],"title":"WebhooksListResponse","description":"Response for listing webhooks."},"WonTender":{"properties":{"source":{"type":"string","title":"Source"},"source_id":{"type":"string","title":"Source Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"buyer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"notice_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notice Type"},"publication_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Publication Date"},"contract_conclusion_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Contract Conclusion Date"},"award":{"anyOf":[{"$ref":"#/components/schemas/WonTenderAward"},{"type":"null"}]},"udbudsscanner_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Udbudsscanner Id"}},"type":"object","required":["source","source_id"],"title":"WonTender"},"WonTenderAward":{"properties":{"value_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value Amount"},"value_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Currency"},"bids_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bids Count"}},"type":"object","title":"WonTenderAward","description":"The award details relevant to the requested company."},"app__models__company__CompanySearchResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/app__models__company__CompanySearchResult"},"type":"array","title":"Data","description":"List of matching companies"},"participants":{"anyOf":[{"items":{"$ref":"#/components/schemas/app__models__company__ParticipantSearchResult"},"type":"array"},{"type":"null"}],"title":"Participants","description":"Matching participants (shown when few company results)"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata including radius_meters for location searches"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination","description":"Pagination info: page, limit, total, pages, total_is_exact. When total_is_exact is false, total and pages are lower bounds. Filter-only browsing can return data beyond pages; name searches have a ranked window of at most 1,000 results. See the endpoint pagination documentation."}},"type":"object","required":["data"],"title":"CompanySearchResponse","description":"Response for company search endpoint."},"app__models__company__CompanySearchResult":{"properties":{"cvr":{"type":"string","title":"Cvr","description":"8-digit CVR number","examples":["12345678"]},"name":{"type":"string","title":"Name","description":"Company name"},"status":{"type":"string","title":"Status","description":"Company status","examples":["active","dissolved"]},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Type","description":"Company type code","examples":["A/S","ApS"]},"address":{"anyOf":[{"$ref":"#/components/schemas/CompanyAddress"},{"type":"null"}],"description":"Company address"},"industry":{"anyOf":[{"$ref":"#/components/schemas/CompanyIndustry"},{"type":"null"}],"description":"Industry classification"},"employees":{"anyOf":[{"$ref":"#/components/schemas/CompanyEmployees"},{"type":"null"}],"description":"Employee information"},"latest_financials":{"anyOf":[{"$ref":"#/components/schemas/LatestFinancials"},{"type":"null"}],"description":"Most recent financial figures"},"location":{"anyOf":[{"$ref":"#/components/schemas/app__models__company__GeoLocation"},{"type":"null"}],"description":"Geocoded coordinates"},"founded_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Founded Date","description":"Date company was founded/registered"},"distance_meters":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Distance Meters","description":"Distance from search point in meters (only for location searches)"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Company logo URL if available"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Public phone number: the owner-provided number when the profile is claimed, otherwise the CVR-registered number","examples":["70277383"]},"phone_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Source","description":"Where `phone` comes from: `company` (provided by the company through a verified claim) or `cvr` (the CVR register)","examples":["cvr"]},"matched_units":{"anyOf":[{"$ref":"#/components/schemas/MatchedUnits"},{"type":"null"}],"description":"Set when the company matched `q` only through the names of its active production units, not its own name or binavne: for example a franchisee whose shops carry a chain's name. Such companies rank after every company whose current name or binavn contains the query, most matching units first, and before companies found only through another name (a former name)."},"matched_name":{"anyOf":[{"$ref":"#/components/schemas/MatchedName"},{"type":"null"}],"description":"Set when the company's current name does not contain `q` but a binavn or a former name does, to show why it matched: `q=7-eleven` finds REITAN CONVENIENCE DENMARK A/S through its binavn 7-ELEVEN A/S."}},"type":"object","required":["cvr","name","status"],"title":"CompanySearchResult","description":"Simplified company data for search results."},"app__models__company__GeoLocation":{"properties":{"type":{"type":"string","title":"Type","description":"GeoJSON type (always 'Point')","default":"Point"},"coordinates":{"items":{"type":"number"},"type":"array","title":"Coordinates","description":"Coordinates as [longitude, latitude]","examples":[[12.5683,55.6761]]}},"type":"object","required":["coordinates"],"title":"GeoLocation","description":"GeoJSON Point for geographic coordinates."},"app__models__company__ParticipantSearchResult":{"properties":{"unit_number":{"type":"integer","title":"Unit Number","description":"CVR unit number for participant lookups"},"name":{"type":"string","title":"Name","description":"Participant name"},"unit_type":{"type":"string","title":"Unit Type","description":"Type: PERSON or VIRKSOMHED"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"CVR number (only for company participants)"},"company_relations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Company Relations","description":"Companies this participant is associated with"}},"type":"object","required":["unit_number","name","unit_type"],"title":"ParticipantSearchResult","description":"Participant/person found in search results."},"app__models__participant__ParticipantSearchResult":{"properties":{"unit_number":{"type":"integer","title":"Unit Number","description":"CVR unit number for lookups"},"unit_type":{"type":"string","title":"Unit Type","description":"Type — always PERSON (participants are individuals)"},"name":{"type":"string","title":"Name","description":"Participant name"},"cvr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvr","description":"Unused — participants are individuals (kept for response-shape stability)"},"company_relations":{"items":{"$ref":"#/components/schemas/ParticipantSearchResultRelation"},"type":"array","title":"Company Relations","description":"Active roles (max 5). A company may appear more than once if the participant holds several roles there (e.g. owner + director)."},"company_count":{"type":"integer","title":"Company Count","description":"Number of distinct companies the participant is or has been related to (matches what the portfolio expands to).","default":0},"active_company_count":{"type":"integer","title":"Active Company Count","description":"Distinct companies where the participant currently holds an active role.","default":0}},"type":"object","required":["unit_number","unit_type","name"],"title":"ParticipantSearchResult","description":"Simplified participant for search results."},"app__models__property__GeoLocation":{"properties":{"type":{"type":"string","title":"Type","default":"Point"},"coordinates":{"items":{"type":"number"},"type":"array","title":"Coordinates"}},"type":"object","required":["coordinates"],"title":"GeoLocation","description":"GeoJSON Point."},"app__routers__account__UsageResponse":{"properties":{"data":{"$ref":"#/components/schemas/UsageStats","description":"Usage statistics"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data"],"title":"UsageResponse"},"app__routers__reference__IndustryListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Industry"},"type":"array","title":"Data","description":"List of industries"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data","meta"],"title":"IndustryListResponse","description":"Response with list of industries."},"app__routers__reference__MunicipalityListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Municipality"},"type":"array","title":"Data","description":"List of municipalities"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data","meta"],"title":"MunicipalityListResponse","description":"Response with list of municipalities."},"app__routers__reference__PostalCodeListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PostalCode"},"type":"array","title":"Data","description":"List of postal codes"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata"}},"type":"object","required":["data","meta"],"title":"PostalCodeListResponse","description":"Response with list of postal codes."},"ChangeDetail":{"description":"A single field change.","properties":{"field":{"title":"Field","type":"string"},"old_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Old Value"},"new_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"New Value"}},"required":["field"],"title":"ChangeDetail","type":"object"},"ChangeSummary":{"description":"Human-readable summary in multiple languages.","properties":{"da":{"title":"Da","type":"string"},"en":{"title":"En","type":"string"}},"required":["da","en"],"title":"ChangeSummary","type":"object"},"WebhookPayload":{"description":"JSON body POSTed to your webhook URL when a change event matches.","properties":{"event_id":{"description":"Globally unique event ID. Use this for idempotency on your side.","title":"Event Id","type":"string"},"event_type":{"$ref":"#/components/schemas/EventType","description":"What kind of change occurred."},"cvr":{"description":"The 8-digit CVR number of the company that changed.","title":"Cvr","type":"string"},"company_name":{"description":"Company name at the time the event was detected.","title":"Company Name","type":"string"},"changes":{"description":"Field-level diff for the change. May be empty for some event types.","items":{"$ref":"#/components/schemas/ChangeDetail"},"title":"Changes","type":"array"},"summary":{"$ref":"#/components/schemas/ChangeSummary","description":"Pre-rendered human-readable summary in Danish (`da`) and English (`en`)."},"detected_at":{"description":"When our system detected the change (typically minutes after CVR publishes it).","format":"date-time","title":"Detected At","type":"string"},"timestamp":{"description":"When this webhook delivery was sent.","format":"date-time","title":"Timestamp","type":"string"}},"required":["event_id","event_type","cvr","company_name","changes","summary","detected_at","timestamp"],"title":"WebhookPayload","type":"object"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API key authentication. Include your API key in the Authorization header: `Bearer sk_live_your_key`. Get your key at [companydata.dk](https://companydata.dk)"}}},"tags":[{"name":"Account"},{"name":"Auditors"},{"name":"Companies"},{"name":"cvrapi.dk compatibility","description":"A drop-in replacement for the cvrapi.dk API (version 6): same parameters, same response format, same error bodies. Replace `cvrapi.dk` with `api.companydata.dk/cvrapi` in your base URL. Everyone gets 50 lookups a day (per IP without a key, per account with one); a companydata.dk API key (`token=`) adds its monthly API quota on top."},{"name":"E-invoicing","description":"EAN (GLN) numbers and Peppol endpoints of Danish companies and public institutions: who receives invoices on an EAN, and in which formats (OIOUBL, Peppol BIS Billing 3.0). Refreshed daily from the Peppol Directory."},{"name":"Legal notices","description":"Statstidende notices about companies (bankruptcy, reconstruction, forced auctions, liquidation, general meetings, capital changes, mergers) with history since March 2026, filters and a polling cursor. Pro and Team."},{"name":"Participants"},{"name":"Production Units"},{"name":"Properties"},{"name":"Reference Data"},{"name":"Screening"},{"name":"Webhooks","description":"\nWebhooks let your application receive real-time notifications when company data changes\nin the CVR registry. Useful for monitoring a portfolio of clients, prospects, suppliers,\nor any list of CVRs you care about.\n\n**Pro subscription required**, except `GET /v1/webhooks/event-types` which is open to any API key.\nPro accounts can register up to **5 webhooks**, each monitoring up to **50,000 CVRs**.\n\n## Authenticating to this API\n\nAll `/v1/webhooks/*` requests authenticate the same way as the rest of the companydata.dk API:\na Bearer token in the `Authorization` header.\n\n```\nAuthorization: Bearer sk_live_your_api_key\n```\n\n## Setup in three steps\n\n**1. Create an HTTPS endpoint** on your server that accepts `POST` with a JSON body. Return any\n`2xx` status code to acknowledge receipt. Anything outside `2xx` is treated as a failed delivery.\n\n**2. Register the webhook** with `POST /v1/webhooks`. The response includes a `secret` —\n**store it immediately**, it is only returned once and is required to verify incoming payloads.\nUntil step 3 is completed, a freshly created webhook receives **no events**.\n\n**3. Tell us which CVRs to monitor** with `PUT /v1/webhooks/{webhook_id}/cvr-filter`.\nSend the full list of 8-digit CVR numbers you care about (up to 50,000 per webhook).\nRe-send the full list any time you want to change which companies are tracked.\n\n## Payload\n\nEvery event POSTs a JSON body matching the `WebhookPayload` schema to your URL:\n\n```json\n{\n  \"event_id\": \"9c1f7e64-3b8a-4f0d-9a25-1d6c8a4e7f10\",\n  \"event_type\": \"ownership\",\n  \"cvr\": \"12345678\",\n  \"company_name\": \"Example ApS\",\n  \"changes\": [\n    {\"field\": \"ownership_percent\", \"old_value\": \"25.0\", \"new_value\": \"51.0\"}\n  ],\n  \"summary\": {\n    \"da\": \"Ejerandel ændret fra 25% til 51%\",\n    \"en\": \"Ownership percent changed from 25% to 51%\"\n  },\n  \"detected_at\": \"2026-04-28T09:14:22Z\",\n  \"timestamp\": \"2026-04-28T09:14:23Z\"\n}\n```\n\n`event_id` is a UUIDv4, globally unique, and **stable across retries** — use it as the key\nfor de-duplication. The `changes` array contains field-level diffs and may be empty for some\nevent types; values are always strings (or `null`). The human-readable `summary` is always populated.\n\nDiscover the full list of event types with `GET /v1/webhooks/event-types`.\n\n## Delivery semantics\n\n- **Latency.** Most events are delivered within a few minutes of detection. Annual report\n  (`financial`) events are batch-processed and may take **up to 24 hours** because XBRL parsing\n  is queued.\n- **At-least-once.** Network errors and retries can cause the same event to be delivered more\n  than once. De-duplicate on `event_id` (a 7-day cache window is more than sufficient).\n- **Ordering.** Events are not strictly ordered. Use `detected_at` to sequence changes for a\n  given company on your side.\n- **No replay or backfill.** Events that exhaust their retry budget are not re-attempted.\n  If your consumer is down longer than the retry window, reconcile by re-fetching the affected\n  companies from `GET /v1/companies/{cvr}` once you're back up.\n\n## Headers\n\nEvery delivery includes:\n\n| Header | Description |\n|---|---|\n| `Content-Type` | Always `application/json` |\n| `X-Companydata-Signature` | `sha256=<hex>` — HMAC-SHA256 of the raw request body using your webhook secret |\n| `X-Companydata-Event` | The event type (matches `event_type` in the body) |\n| `X-Companydata-Delivery` | Unique delivery ID — changes on each retry. Useful for support |\n\nAny custom headers you set when creating the webhook are added to every delivery.\n\n## Verifying the signature\n\nCompute HMAC-SHA256 of the raw request body using your webhook `secret` and compare it to the\nhex value after `sha256=` in `X-Companydata-Signature`. **Always use a constant-time comparison.**\n\n```python\nimport hmac, hashlib\n\ndef verify(raw_body: bytes, signature_header: str, secret: str) -> bool:\n    expected = \"sha256=\" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()\n    return hmac.compare_digest(expected, signature_header)\n```\n\n```javascript\nimport { createHmac, timingSafeEqual } from \"crypto\";\n\nfunction verify(rawBody, signatureHeader, secret) {\n  const expected = \"sha256=\" + createHmac(\"sha256\", secret).update(rawBody).digest(\"hex\");\n  return timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));\n}\n```\n\n## Retries and auto-disable\n\n- Each delivery is attempted **up to 3 times**. Anything outside `2xx` (including timeouts after 10s)\n  is retried automatically. Retries are spaced roughly **2 minutes apart**, so a delivery either\n  succeeds or is permanently failed within ~5 minutes of the first attempt.\n- Your endpoint should respond quickly — ideally enqueue the payload and return `200` immediately.\n- After **10 consecutive failures** across deliveries, the webhook is **auto-disabled** and `active`\n  is set to `false`. Re-enable it with `PUT /v1/webhooks/{webhook_id}` and `{\"active\": true}` once\n  the underlying issue is fixed; this also resets the failure counter.\n\n## Inspecting deliveries\n\n`GET /v1/webhooks/{webhook_id}/deliveries` lists recent delivery attempts (HTTP status,\ntruncated response body, error messages, timestamps) with `limit` and `offset` for pagination.\n\n`POST /v1/webhooks/{webhook_id}/test` sends a synthetic event to your URL — use this to verify\nyour endpoint accepts the payload and signature before going live.\n"}],"servers":[{"url":"https://api.companydata.dk","description":"Production"}],"security":[{"BearerAuth":[]}]}