diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5e5a139..9e00385 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -18,7 +18,7 @@ jobs:
lint:
timeout-minutes: 10
name: lint
- runs-on: ${{ github.repository == 'stainless-sdks/openregister-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
+ runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -44,7 +44,7 @@ jobs:
permissions:
contents: read
id-token: write
- runs-on: ${{ github.repository == 'stainless-sdks/openregister-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
+ runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -84,7 +84,7 @@ jobs:
test:
timeout-minutes: 10
name: test
- runs-on: ${{ github.repository == 'stainless-sdks/openregister-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
+ runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 27d2fbb..078b9e2 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "3.7.0"
+ ".": "3.8.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index a11b722..f2af74d 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 21
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-9003cf9ba012f57f92e1dbcdec03aa0577f270632a92acd5aabcf65491fe278f.yml
-openapi_spec_hash: 783638013b86f0777caae690a60c90f1
-config_hash: 16c97c736c0b7de7fb3470f37f856206
+configured_endpoints: 24
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-747e4d0416e248c5a1ad22fe34847a234427a1228bde5192ca1cb9dd879ebdc0.yml
+openapi_spec_hash: 3774f4295f698f445c3ece73583f3604
+config_hash: 42520b3d15dbe4a67577eb9c86e4ed01
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8d8d3ec..6c7caa7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## 3.8.0 (2026-07-23)
+
+Full Changelog: [v3.7.0...v3.8.0](https://github.com/oregister/openregister-python/compare/v3.7.0...v3.8.0)
+
+### Features
+
+* **api:** insolvencies & m&a ([1f55abc](https://github.com/oregister/openregister-python/commit/1f55abc8d9ba38db51c125c16c8dde94ceb8ffda))
+* **api:** manual updates ([53703ad](https://github.com/oregister/openregister-python/commit/53703adf0fd16faba01abb4277e4133108f602ea))
+* **api:** manual updates ([a293e61](https://github.com/oregister/openregister-python/commit/a293e6105c974b39c4cde0ea33d581d6728c9c04))
+* **api:** manual updates ([ae6a845](https://github.com/oregister/openregister-python/commit/ae6a8451a0ab874eee7f2471b0f0005f110b49fa))
+* **api:** manual updates ([382bb4c](https://github.com/oregister/openregister-python/commit/382bb4c7cb9ea8e573f8ab5144601af766606c29))
+* **api:** manual updates ([8c84e9b](https://github.com/oregister/openregister-python/commit/8c84e9b508b6843e072928314984b501d509db97))
+* **api:** typed dates ([bf84084](https://github.com/oregister/openregister-python/commit/bf84084c7a3f1d6d435370e508c89bfea83a5e16))
+* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([4b1db50](https://github.com/oregister/openregister-python/commit/4b1db502260b9cf0465151e84dee5de68a5d4dcc))
+
## 3.7.0 (2026-06-30)
Full Changelog: [v3.6.0...v3.7.0](https://github.com/oregister/openregister-python/compare/v3.6.0...v3.7.0)
diff --git a/api.md b/api.md
index b9d3c16..23f317b 100644
--- a/api.md
+++ b/api.md
@@ -12,6 +12,7 @@ from openregister.types import (
SearchFilterBase,
SearchRequestPagination,
SearchAutocompleteCompaniesV1Response,
+ SearchFindInsolvenciesV1Response,
SearchFindPersonV1Response,
SearchLookupCompanyByURLResponse,
)
@@ -21,6 +22,7 @@ Methods:
- client.search.autocomplete_companies_v1(\*\*params) -> SearchAutocompleteCompaniesV1Response
- client.search.find_companies_v1(\*\*params) -> CompanySearch
+- client.search.find_insolvencies_v1(\*\*params) -> SearchFindInsolvenciesV1Response
- client.search.find_person_v1(\*\*params) -> SearchFindPersonV1Response
- client.search.lookup_company_by_url(\*\*params) -> SearchLookupCompanyByURLResponse
@@ -136,3 +138,33 @@ Methods:
- client.transparenzregister.extract.create_v1(\*\*params) -> ExtractCreateV1Response
- client.transparenzregister.extract.get_v1(extract_id) -> TransparenzregisterExtract
+
+# Usage
+
+Types:
+
+```python
+from openregister.types import UsageGetCreditsV1Response
+```
+
+Methods:
+
+- client.usage.get_credits_v1() -> UsageGetCreditsV1Response
+
+# Insolvency
+
+Types:
+
+```python
+from openregister.types import (
+ InsolvencyAdministrationKind,
+ InsolvencyDebtorKind,
+ InsolvencyProceedingKind,
+ InsolvencyStatus,
+ InsolvencyGetDetailsV1Response,
+)
+```
+
+Methods:
+
+- client.insolvency.get_details_v1(insolvency_id) -> InsolvencyGetDetailsV1Response
diff --git a/pyproject.toml b/pyproject.toml
index 9cf40a1..4da2f23 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openregister-sdk"
-version = "3.7.0"
+version = "3.8.0"
description = "The official Python library for the openregister API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/openregister/_client.py b/src/openregister/_client.py
index c8e2b99..e63b906 100644
--- a/src/openregister/_client.py
+++ b/src/openregister/_client.py
@@ -35,12 +35,14 @@
)
if TYPE_CHECKING:
- from .resources import person, search, company, monitor, document, transparenzregister
+ from .resources import usage, person, search, company, monitor, document, insolvency, transparenzregister
+ from .resources.usage import UsageResource, AsyncUsageResource
from .resources.person import PersonResource, AsyncPersonResource
from .resources.search import SearchResource, AsyncSearchResource
from .resources.company import CompanyResource, AsyncCompanyResource
from .resources.monitor import MonitorResource, AsyncMonitorResource
from .resources.document import DocumentResource, AsyncDocumentResource
+ from .resources.insolvency import InsolvencyResource, AsyncInsolvencyResource
from .resources.transparenzregister.transparenzregister import (
TransparenzregisterResource,
AsyncTransparenzregisterResource,
@@ -158,6 +160,18 @@ def transparenzregister(self) -> TransparenzregisterResource:
return TransparenzregisterResource(self)
+ @cached_property
+ def usage(self) -> UsageResource:
+ from .resources.usage import UsageResource
+
+ return UsageResource(self)
+
+ @cached_property
+ def insolvency(self) -> InsolvencyResource:
+ from .resources.insolvency import InsolvencyResource
+
+ return InsolvencyResource(self)
+
@cached_property
def with_raw_response(self) -> OpenregisterWithRawResponse:
return OpenregisterWithRawResponse(self)
@@ -371,6 +385,18 @@ def transparenzregister(self) -> AsyncTransparenzregisterResource:
return AsyncTransparenzregisterResource(self)
+ @cached_property
+ def usage(self) -> AsyncUsageResource:
+ from .resources.usage import AsyncUsageResource
+
+ return AsyncUsageResource(self)
+
+ @cached_property
+ def insolvency(self) -> AsyncInsolvencyResource:
+ from .resources.insolvency import AsyncInsolvencyResource
+
+ return AsyncInsolvencyResource(self)
+
@cached_property
def with_raw_response(self) -> AsyncOpenregisterWithRawResponse:
return AsyncOpenregisterWithRawResponse(self)
@@ -526,6 +552,18 @@ def transparenzregister(self) -> transparenzregister.TransparenzregisterResource
return TransparenzregisterResourceWithRawResponse(self._client.transparenzregister)
+ @cached_property
+ def usage(self) -> usage.UsageResourceWithRawResponse:
+ from .resources.usage import UsageResourceWithRawResponse
+
+ return UsageResourceWithRawResponse(self._client.usage)
+
+ @cached_property
+ def insolvency(self) -> insolvency.InsolvencyResourceWithRawResponse:
+ from .resources.insolvency import InsolvencyResourceWithRawResponse
+
+ return InsolvencyResourceWithRawResponse(self._client.insolvency)
+
class AsyncOpenregisterWithRawResponse:
_client: AsyncOpenregister
@@ -569,6 +607,18 @@ def transparenzregister(self) -> transparenzregister.AsyncTransparenzregisterRes
return AsyncTransparenzregisterResourceWithRawResponse(self._client.transparenzregister)
+ @cached_property
+ def usage(self) -> usage.AsyncUsageResourceWithRawResponse:
+ from .resources.usage import AsyncUsageResourceWithRawResponse
+
+ return AsyncUsageResourceWithRawResponse(self._client.usage)
+
+ @cached_property
+ def insolvency(self) -> insolvency.AsyncInsolvencyResourceWithRawResponse:
+ from .resources.insolvency import AsyncInsolvencyResourceWithRawResponse
+
+ return AsyncInsolvencyResourceWithRawResponse(self._client.insolvency)
+
class OpenregisterWithStreamedResponse:
_client: Openregister
@@ -612,6 +662,18 @@ def transparenzregister(self) -> transparenzregister.TransparenzregisterResource
return TransparenzregisterResourceWithStreamingResponse(self._client.transparenzregister)
+ @cached_property
+ def usage(self) -> usage.UsageResourceWithStreamingResponse:
+ from .resources.usage import UsageResourceWithStreamingResponse
+
+ return UsageResourceWithStreamingResponse(self._client.usage)
+
+ @cached_property
+ def insolvency(self) -> insolvency.InsolvencyResourceWithStreamingResponse:
+ from .resources.insolvency import InsolvencyResourceWithStreamingResponse
+
+ return InsolvencyResourceWithStreamingResponse(self._client.insolvency)
+
class AsyncOpenregisterWithStreamedResponse:
_client: AsyncOpenregister
@@ -655,6 +717,18 @@ def transparenzregister(self) -> transparenzregister.AsyncTransparenzregisterRes
return AsyncTransparenzregisterResourceWithStreamingResponse(self._client.transparenzregister)
+ @cached_property
+ def usage(self) -> usage.AsyncUsageResourceWithStreamingResponse:
+ from .resources.usage import AsyncUsageResourceWithStreamingResponse
+
+ return AsyncUsageResourceWithStreamingResponse(self._client.usage)
+
+ @cached_property
+ def insolvency(self) -> insolvency.AsyncInsolvencyResourceWithStreamingResponse:
+ from .resources.insolvency import AsyncInsolvencyResourceWithStreamingResponse
+
+ return AsyncInsolvencyResourceWithStreamingResponse(self._client.insolvency)
+
Client = Openregister
diff --git a/src/openregister/_version.py b/src/openregister/_version.py
index 1f8dcd8..1bd21c2 100644
--- a/src/openregister/_version.py
+++ b/src/openregister/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "openregister"
-__version__ = "3.7.0" # x-release-please-version
+__version__ = "3.8.0" # x-release-please-version
diff --git a/src/openregister/resources/__init__.py b/src/openregister/resources/__init__.py
index 9ef628c..3799fa3 100644
--- a/src/openregister/resources/__init__.py
+++ b/src/openregister/resources/__init__.py
@@ -1,5 +1,13 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from .usage import (
+ UsageResource,
+ AsyncUsageResource,
+ UsageResourceWithRawResponse,
+ AsyncUsageResourceWithRawResponse,
+ UsageResourceWithStreamingResponse,
+ AsyncUsageResourceWithStreamingResponse,
+)
from .person import (
PersonResource,
AsyncPersonResource,
@@ -40,6 +48,14 @@
DocumentResourceWithStreamingResponse,
AsyncDocumentResourceWithStreamingResponse,
)
+from .insolvency import (
+ InsolvencyResource,
+ AsyncInsolvencyResource,
+ InsolvencyResourceWithRawResponse,
+ AsyncInsolvencyResourceWithRawResponse,
+ InsolvencyResourceWithStreamingResponse,
+ AsyncInsolvencyResourceWithStreamingResponse,
+)
from .transparenzregister import (
TransparenzregisterResource,
AsyncTransparenzregisterResource,
@@ -86,4 +102,16 @@
"AsyncTransparenzregisterResourceWithRawResponse",
"TransparenzregisterResourceWithStreamingResponse",
"AsyncTransparenzregisterResourceWithStreamingResponse",
+ "UsageResource",
+ "AsyncUsageResource",
+ "UsageResourceWithRawResponse",
+ "AsyncUsageResourceWithRawResponse",
+ "UsageResourceWithStreamingResponse",
+ "AsyncUsageResourceWithStreamingResponse",
+ "InsolvencyResource",
+ "AsyncInsolvencyResource",
+ "InsolvencyResourceWithRawResponse",
+ "AsyncInsolvencyResourceWithRawResponse",
+ "InsolvencyResourceWithStreamingResponse",
+ "AsyncInsolvencyResourceWithStreamingResponse",
]
diff --git a/src/openregister/resources/insolvency.py b/src/openregister/resources/insolvency.py
new file mode 100644
index 0000000..b81e1d5
--- /dev/null
+++ b/src/openregister/resources/insolvency.py
@@ -0,0 +1,164 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import httpx
+
+from .._types import Body, Query, Headers, NotGiven, not_given
+from .._utils import path_template
+from .._compat import cached_property
+from .._resource import SyncAPIResource, AsyncAPIResource
+from .._response import (
+ to_raw_response_wrapper,
+ to_streamed_response_wrapper,
+ async_to_raw_response_wrapper,
+ async_to_streamed_response_wrapper,
+)
+from .._base_client import make_request_options
+from ..types.insolvency_get_details_v1_response import InsolvencyGetDetailsV1Response
+
+__all__ = ["InsolvencyResource", "AsyncInsolvencyResource"]
+
+
+class InsolvencyResource(SyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> InsolvencyResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/oregister/openregister-python#accessing-raw-response-data-eg-headers
+ """
+ return InsolvencyResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> InsolvencyResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/oregister/openregister-python#with_streaming_response
+ """
+ return InsolvencyResourceWithStreamingResponse(self)
+
+ def get_details_v1(
+ self,
+ insolvency_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> InsolvencyGetDetailsV1Response:
+ """
+ Get detailed insolvency proceeding information
+
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not insolvency_id:
+ raise ValueError(f"Expected a non-empty value for `insolvency_id` but received {insolvency_id!r}")
+ return self._get(
+ path_template("/v1/insolvency/{insolvency_id}", insolvency_id=insolvency_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=InsolvencyGetDetailsV1Response,
+ )
+
+
+class AsyncInsolvencyResource(AsyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> AsyncInsolvencyResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/oregister/openregister-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncInsolvencyResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncInsolvencyResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/oregister/openregister-python#with_streaming_response
+ """
+ return AsyncInsolvencyResourceWithStreamingResponse(self)
+
+ async def get_details_v1(
+ self,
+ insolvency_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> InsolvencyGetDetailsV1Response:
+ """
+ Get detailed insolvency proceeding information
+
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not insolvency_id:
+ raise ValueError(f"Expected a non-empty value for `insolvency_id` but received {insolvency_id!r}")
+ return await self._get(
+ path_template("/v1/insolvency/{insolvency_id}", insolvency_id=insolvency_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=InsolvencyGetDetailsV1Response,
+ )
+
+
+class InsolvencyResourceWithRawResponse:
+ def __init__(self, insolvency: InsolvencyResource) -> None:
+ self._insolvency = insolvency
+
+ self.get_details_v1 = to_raw_response_wrapper(
+ insolvency.get_details_v1,
+ )
+
+
+class AsyncInsolvencyResourceWithRawResponse:
+ def __init__(self, insolvency: AsyncInsolvencyResource) -> None:
+ self._insolvency = insolvency
+
+ self.get_details_v1 = async_to_raw_response_wrapper(
+ insolvency.get_details_v1,
+ )
+
+
+class InsolvencyResourceWithStreamingResponse:
+ def __init__(self, insolvency: InsolvencyResource) -> None:
+ self._insolvency = insolvency
+
+ self.get_details_v1 = to_streamed_response_wrapper(
+ insolvency.get_details_v1,
+ )
+
+
+class AsyncInsolvencyResourceWithStreamingResponse:
+ def __init__(self, insolvency: AsyncInsolvencyResource) -> None:
+ self._insolvency = insolvency
+
+ self.get_details_v1 = async_to_streamed_response_wrapper(
+ insolvency.get_details_v1,
+ )
diff --git a/src/openregister/resources/monitor.py b/src/openregister/resources/monitor.py
index 9e4b657..9110948 100644
--- a/src/openregister/resources/monitor.py
+++ b/src/openregister/resources/monitor.py
@@ -52,7 +52,14 @@ def create(
entity_type: Literal["company", "person"],
preferences: List[
Literal[
- "basic", "representation", "financials", "documents", "ownership", "holdings", "management_positions"
+ "basic",
+ "representation",
+ "financials",
+ "documents",
+ "ownership",
+ "holdings",
+ "management_positions",
+ "insolvencies",
]
],
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -180,7 +187,14 @@ async def create(
entity_type: Literal["company", "person"],
preferences: List[
Literal[
- "basic", "representation", "financials", "documents", "ownership", "holdings", "management_positions"
+ "basic",
+ "representation",
+ "financials",
+ "documents",
+ "ownership",
+ "holdings",
+ "management_positions",
+ "insolvencies",
]
],
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
diff --git a/src/openregister/resources/search.py b/src/openregister/resources/search.py
index c240d84..febcd4a 100644
--- a/src/openregister/resources/search.py
+++ b/src/openregister/resources/search.py
@@ -9,6 +9,7 @@
from ..types import (
search_find_person_v1_params,
search_find_companies_v1_params,
+ search_find_insolvencies_v1_params,
search_lookup_company_by_url_params,
search_autocomplete_companies_v1_params,
)
@@ -26,6 +27,7 @@
from ..types.company_search import CompanySearch
from ..types.search_find_person_v1_response import SearchFindPersonV1Response
from ..types.search_request_pagination_param import SearchRequestPaginationParam
+from ..types.search_find_insolvencies_v1_response import SearchFindInsolvenciesV1Response
from ..types.search_lookup_company_by_url_response import SearchLookupCompanyByURLResponse
from ..types.search_autocomplete_companies_v1_response import SearchAutocompleteCompaniesV1Response
@@ -143,6 +145,53 @@ def find_companies_v1(
cast_to=CompanySearch,
)
+ def find_insolvencies_v1(
+ self,
+ *,
+ filters: Iterable[search_find_insolvencies_v1_params.Filter] | Omit = omit,
+ pagination: SearchRequestPaginationParam | Omit = omit,
+ query: search_find_insolvencies_v1_params.Query | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> SearchFindInsolvenciesV1Response:
+ """
+ Search for insolvency proceedings
+
+ Args:
+ filters: Filters to filter insolvency proceedings.
+
+ pagination: Pagination parameters.
+
+ query: Search query to filter insolvency proceedings.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return self._post(
+ "/v1/search/insolvency",
+ body=maybe_transform(
+ {
+ "filters": filters,
+ "pagination": pagination,
+ "query": query,
+ },
+ search_find_insolvencies_v1_params.SearchFindInsolvenciesV1Params,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=SearchFindInsolvenciesV1Response,
+ )
+
def find_person_v1(
self,
*,
@@ -340,6 +389,53 @@ async def find_companies_v1(
cast_to=CompanySearch,
)
+ async def find_insolvencies_v1(
+ self,
+ *,
+ filters: Iterable[search_find_insolvencies_v1_params.Filter] | Omit = omit,
+ pagination: SearchRequestPaginationParam | Omit = omit,
+ query: search_find_insolvencies_v1_params.Query | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> SearchFindInsolvenciesV1Response:
+ """
+ Search for insolvency proceedings
+
+ Args:
+ filters: Filters to filter insolvency proceedings.
+
+ pagination: Pagination parameters.
+
+ query: Search query to filter insolvency proceedings.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return await self._post(
+ "/v1/search/insolvency",
+ body=await async_maybe_transform(
+ {
+ "filters": filters,
+ "pagination": pagination,
+ "query": query,
+ },
+ search_find_insolvencies_v1_params.SearchFindInsolvenciesV1Params,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=SearchFindInsolvenciesV1Response,
+ )
+
async def find_person_v1(
self,
*,
@@ -438,6 +534,9 @@ def __init__(self, search: SearchResource) -> None:
self.find_companies_v1 = to_raw_response_wrapper(
search.find_companies_v1,
)
+ self.find_insolvencies_v1 = to_raw_response_wrapper(
+ search.find_insolvencies_v1,
+ )
self.find_person_v1 = to_raw_response_wrapper(
search.find_person_v1,
)
@@ -456,6 +555,9 @@ def __init__(self, search: AsyncSearchResource) -> None:
self.find_companies_v1 = async_to_raw_response_wrapper(
search.find_companies_v1,
)
+ self.find_insolvencies_v1 = async_to_raw_response_wrapper(
+ search.find_insolvencies_v1,
+ )
self.find_person_v1 = async_to_raw_response_wrapper(
search.find_person_v1,
)
@@ -474,6 +576,9 @@ def __init__(self, search: SearchResource) -> None:
self.find_companies_v1 = to_streamed_response_wrapper(
search.find_companies_v1,
)
+ self.find_insolvencies_v1 = to_streamed_response_wrapper(
+ search.find_insolvencies_v1,
+ )
self.find_person_v1 = to_streamed_response_wrapper(
search.find_person_v1,
)
@@ -492,6 +597,9 @@ def __init__(self, search: AsyncSearchResource) -> None:
self.find_companies_v1 = async_to_streamed_response_wrapper(
search.find_companies_v1,
)
+ self.find_insolvencies_v1 = async_to_streamed_response_wrapper(
+ search.find_insolvencies_v1,
+ )
self.find_person_v1 = async_to_streamed_response_wrapper(
search.find_person_v1,
)
diff --git a/src/openregister/resources/usage.py b/src/openregister/resources/usage.py
new file mode 100644
index 0000000..d2fe585
--- /dev/null
+++ b/src/openregister/resources/usage.py
@@ -0,0 +1,135 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import httpx
+
+from .._types import Body, Query, Headers, NotGiven, not_given
+from .._compat import cached_property
+from .._resource import SyncAPIResource, AsyncAPIResource
+from .._response import (
+ to_raw_response_wrapper,
+ to_streamed_response_wrapper,
+ async_to_raw_response_wrapper,
+ async_to_streamed_response_wrapper,
+)
+from .._base_client import make_request_options
+from ..types.usage_get_credits_v1_response import UsageGetCreditsV1Response
+
+__all__ = ["UsageResource", "AsyncUsageResource"]
+
+
+class UsageResource(SyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> UsageResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/oregister/openregister-python#accessing-raw-response-data-eg-headers
+ """
+ return UsageResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> UsageResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/oregister/openregister-python#with_streaming_response
+ """
+ return UsageResourceWithStreamingResponse(self)
+
+ def get_credits_v1(
+ self,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> UsageGetCreditsV1Response:
+ """Retrieve public API credit usage"""
+ return self._get(
+ "/v1/credits",
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=UsageGetCreditsV1Response,
+ )
+
+
+class AsyncUsageResource(AsyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> AsyncUsageResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/oregister/openregister-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncUsageResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncUsageResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/oregister/openregister-python#with_streaming_response
+ """
+ return AsyncUsageResourceWithStreamingResponse(self)
+
+ async def get_credits_v1(
+ self,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> UsageGetCreditsV1Response:
+ """Retrieve public API credit usage"""
+ return await self._get(
+ "/v1/credits",
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=UsageGetCreditsV1Response,
+ )
+
+
+class UsageResourceWithRawResponse:
+ def __init__(self, usage: UsageResource) -> None:
+ self._usage = usage
+
+ self.get_credits_v1 = to_raw_response_wrapper(
+ usage.get_credits_v1,
+ )
+
+
+class AsyncUsageResourceWithRawResponse:
+ def __init__(self, usage: AsyncUsageResource) -> None:
+ self._usage = usage
+
+ self.get_credits_v1 = async_to_raw_response_wrapper(
+ usage.get_credits_v1,
+ )
+
+
+class UsageResourceWithStreamingResponse:
+ def __init__(self, usage: UsageResource) -> None:
+ self._usage = usage
+
+ self.get_credits_v1 = to_streamed_response_wrapper(
+ usage.get_credits_v1,
+ )
+
+
+class AsyncUsageResourceWithStreamingResponse:
+ def __init__(self, usage: AsyncUsageResource) -> None:
+ self._usage = usage
+
+ self.get_credits_v1 = async_to_streamed_response_wrapper(
+ usage.get_credits_v1,
+ )
diff --git a/src/openregister/types/__init__.py b/src/openregister/types/__init__.py
index ad39104..ca9db5c 100644
--- a/src/openregister/types/__init__.py
+++ b/src/openregister/types/__init__.py
@@ -17,6 +17,7 @@
from .company_purpose import CompanyPurpose as CompanyPurpose
from .company_document import CompanyDocument as CompanyDocument
from .company_register import CompanyRegister as CompanyRegister
+from .insolvency_status import InsolvencyStatus as InsolvencyStatus
from .merged_report_row import MergedReportRow as MergedReportRow
from .company_legal_form import CompanyLegalForm as CompanyLegalForm
from .merged_report_table import MergedReportTable as MergedReportTable
@@ -25,16 +26,20 @@
from .company_relation_type import CompanyRelationType as CompanyRelationType
from .monitor_create_params import MonitorCreateParams as MonitorCreateParams
from .monitor_list_response import MonitorListResponse as MonitorListResponse
+from .insolvency_debtor_kind import InsolvencyDebtorKind as InsolvencyDebtorKind
from .monitor_create_response import MonitorCreateResponse as MonitorCreateResponse
from .search_filter_base_param import SearchFilterBaseParam as SearchFilterBaseParam
from .company_owner_legal_person import CompanyOwnerLegalPerson as CompanyOwnerLegalPerson
+from .insolvency_proceeding_kind import InsolvencyProceedingKind as InsolvencyProceedingKind
from .company_get_owners_v1_params import CompanyGetOwnersV1Params as CompanyGetOwnersV1Params
from .company_get_ubos_v1_response import CompanyGetUbosV1Response as CompanyGetUbosV1Response
from .company_owner_natural_person import CompanyOwnerNaturalPerson as CompanyOwnerNaturalPerson
from .company_search_response_item import CompanySearchResponseItem as CompanySearchResponseItem
from .search_find_person_v1_params import SearchFindPersonV1Params as SearchFindPersonV1Params
from .company_get_details_v1_params import CompanyGetDetailsV1Params as CompanyGetDetailsV1Params
+from .usage_get_credits_v1_response import UsageGetCreditsV1Response as UsageGetCreditsV1Response
from .company_get_owners_v1_response import CompanyGetOwnersV1Response as CompanyGetOwnersV1Response
+from .insolvency_administration_kind import InsolvencyAdministrationKind as InsolvencyAdministrationKind
from .person_get_details_v1_response import PersonGetDetailsV1Response as PersonGetDetailsV1Response
from .search_find_person_v1_response import SearchFindPersonV1Response as SearchFindPersonV1Response
from .company_get_contact_v0_response import CompanyGetContactV0Response as CompanyGetContactV0Response
@@ -46,7 +51,10 @@
from .company_get_holdings_v1_response import CompanyGetHoldingsV1Response as CompanyGetHoldingsV1Response
from .document_get_realtime_v1_response import DocumentGetRealtimeV1Response as DocumentGetRealtimeV1Response
from .company_get_financials_v1_response import CompanyGetFinancialsV1Response as CompanyGetFinancialsV1Response
+from .insolvency_get_details_v1_response import InsolvencyGetDetailsV1Response as InsolvencyGetDetailsV1Response
+from .search_find_insolvencies_v1_params import SearchFindInsolvenciesV1Params as SearchFindInsolvenciesV1Params
from .search_lookup_company_by_url_params import SearchLookupCompanyByURLParams as SearchLookupCompanyByURLParams
+from .search_find_insolvencies_v1_response import SearchFindInsolvenciesV1Response as SearchFindInsolvenciesV1Response
from .search_lookup_company_by_url_response import SearchLookupCompanyByURLResponse as SearchLookupCompanyByURLResponse
from .search_autocomplete_companies_v1_params import (
SearchAutocompleteCompaniesV1Params as SearchAutocompleteCompaniesV1Params,
diff --git a/src/openregister/types/company_address.py b/src/openregister/types/company_address.py
index 8a485e9..747860a 100644
--- a/src/openregister/types/company_address.py
+++ b/src/openregister/types/company_address.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import Optional
+from datetime import date
from .._models import BaseModel
@@ -20,7 +21,7 @@ class CompanyAddress(BaseModel):
Berlin, Germany"
"""
- start_date: str
+ start_date: date
"""
Date when this address became effective. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
diff --git a/src/openregister/types/company_capital.py b/src/openregister/types/company_capital.py
index 21cf56f..45a87ed 100644
--- a/src/openregister/types/company_capital.py
+++ b/src/openregister/types/company_capital.py
@@ -1,5 +1,6 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from datetime import date
from typing_extensions import Literal
from .._models import BaseModel
@@ -17,7 +18,7 @@ class CompanyCapital(BaseModel):
currency: Literal["EUR", "DEM", "USD"]
"""Currency code for the capital amount. Example: "EUR" for Euro"""
- start_date: str
+ start_date: date
"""
Date when this capital amount became effective. Format: ISO 8601 (YYYY-MM-DD)
Example: "2023-01-01"
diff --git a/src/openregister/types/company_document.py b/src/openregister/types/company_document.py
index 2cb3ea5..5e4014e 100644
--- a/src/openregister/types/company_document.py
+++ b/src/openregister/types/company_document.py
@@ -1,5 +1,6 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+import datetime
from typing_extensions import Literal
from .._models import BaseModel
@@ -14,7 +15,7 @@ class CompanyDocument(BaseModel):
"f47ac10b-58cc-4372-a567-0e02b2c3d479"
"""
- date: str
+ date: datetime.date
"""
Document publication or filing date. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
diff --git a/src/openregister/types/company_get_details_v1_response.py b/src/openregister/types/company_get_details_v1_response.py
index afe7dd0..e4fe736 100644
--- a/src/openregister/types/company_get_details_v1_response.py
+++ b/src/openregister/types/company_get_details_v1_response.py
@@ -1,5 +1,6 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+import datetime
from typing import List, Optional
from typing_extensions import Literal
@@ -14,22 +15,74 @@
from .company_purpose import CompanyPurpose
from .company_document import CompanyDocument
from .company_register import CompanyRegister
+from .insolvency_status import InsolvencyStatus
from .company_legal_form import CompanyLegalForm
from .representation_role import RepresentationRole
+from .insolvency_proceeding_kind import InsolvencyProceedingKind
+from .insolvency_administration_kind import InsolvencyAdministrationKind
__all__ = [
"CompanyGetDetailsV1Response",
+ "Acquisition",
+ "AssetSpinOff",
"Contact",
"ContactSocialMedia",
"Indicator",
"IndustryCodes",
"IndustryCodesWz2025",
+ "MergedInto",
+ "ProfitTransferAgreement",
"Representation",
"RepresentationLegalPerson",
"RepresentationNaturalPerson",
+ "Insolvency",
]
+class Acquisition(BaseModel):
+ agreement_date: Optional[datetime.date] = None
+ """
+ Date the underlying contract (Verschmelzungsvertrag) was concluded, as cited in
+ the register entry. Null when the register text does not cite a contract date.
+ Entries sharing an agreement_date belong to the same transaction. Format: ISO
+ 8601 (YYYY-MM-DD)
+ """
+
+ company_id: str
+ """
+ Unique company identifier of the company that was merged into this company.
+ Example: DE-HRB-F1103-267645
+ """
+
+ name: str
+ """Current name of the company that was merged into this company."""
+
+ registration_date: datetime.date
+ """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)"""
+
+
+class AssetSpinOff(BaseModel):
+ agreement_date: Optional[datetime.date] = None
+ """
+ Date the underlying contract (Ausgliederungsvertrag) was concluded, as cited in
+ the register entry. Null when the register text does not cite a contract date.
+ Entries sharing an agreement_date belong to the same transaction. Format: ISO
+ 8601 (YYYY-MM-DD)
+ """
+
+ company_id: str
+ """
+ Unique company identifier of the company that received the assets. Example:
+ DE-HRB-F1103-267645
+ """
+
+ name: str
+ """Current name of the company that received the assets."""
+
+ registration_date: datetime.date
+ """Date the spin-off was registered. Format: ISO 8601 (YYYY-MM-DD)"""
+
+
class ContactSocialMedia(BaseModel):
facebook: Optional[str] = None
@@ -79,7 +132,7 @@ class Indicator(BaseModel):
cash: Optional[int] = None
"""The cash of that year (in cents)."""
- date: str
+ date: datetime.date
"""
Date to which this financial indicators apply. Format: ISO 8601 (YYYY-MM-DD)
Example: "2022-01-01"
@@ -131,6 +184,62 @@ class IndustryCodes(BaseModel):
wz2025: List[IndustryCodesWz2025] = FieldInfo(alias="WZ2025")
+class MergedInto(BaseModel):
+ """
+ If the company ceased to exist through a merger (Verschmelzung),
+ the company it was merged into.
+ """
+
+ agreement_date: Optional[datetime.date] = None
+ """
+ Date the underlying contract (Verschmelzungsvertrag) was concluded, as cited in
+ the register entry. Null when the register text does not cite a contract date.
+ Entries sharing an agreement_date belong to the same transaction. Format: ISO
+ 8601 (YYYY-MM-DD)
+ """
+
+ company_id: str
+ """
+ Unique company identifier of the company this company was merged into. Example:
+ DE-HRB-F1103-267645
+ """
+
+ name: str
+ """Current name of the company this company was merged into."""
+
+ registration_date: datetime.date
+ """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)"""
+
+
+class ProfitTransferAgreement(BaseModel):
+ """
+ The company's current profit and loss transfer agreement
+ (Gewinnabführungsvertrag), if one exists. The referenced company
+ is the parent receiving this company's profit (Organträger).
+ Null if the company has no active agreement.
+ """
+
+ agreement_date: Optional[datetime.date] = None
+ """
+ Date the underlying contract (Gewinnabführungsvertrag) was concluded, as cited
+ in the register entry. Null when the register text does not cite a contract
+ date. Entries sharing an agreement_date belong to the same transaction. Format:
+ ISO 8601 (YYYY-MM-DD)
+ """
+
+ company_id: str
+ """
+ Unique company identifier of the parent company receiving this company's profit
+ (Organträger). Example: DE-HRB-F1103-267645
+ """
+
+ name: str
+ """Current name of the parent company."""
+
+ registration_date: datetime.date
+ """Date the agreement was registered. Format: ISO 8601 (YYYY-MM-DD)"""
+
+
class RepresentationLegalPerson(BaseModel):
city: Optional[str] = None
@@ -147,7 +256,7 @@ class RepresentationNaturalPerson(BaseModel):
city: Optional[str] = None
"""City where the representative is located. Example: "Berlin" """
- date_of_birth: Optional[str] = None
+ date_of_birth: Optional[datetime.date] = None
"""
Date of birth of the representative. May still be null for natural persons if it
is not available. Format: ISO 8601 (YYYY-MM-DD) Example: "1990-01-01"
@@ -176,7 +285,7 @@ class Representation(BaseModel):
der Gesellschaft mit sich im eigenen Namen Rechtsgeschäfte abzuschließen"
"""
- end_date: Optional[str] = None
+ end_date: Optional[datetime.date] = None
"""
Date when this representative role ended (if applicable). Format: ISO 8601
(YYYY-MM-DD) Example: "2022-01-01"
@@ -188,7 +297,7 @@ class Representation(BaseModel):
role: RepresentationRole
"""The role of the representation. E.g. "DIRECTOR" """
- start_date: str
+ start_date: datetime.date
"""
Date when this representative role became effective. Format: ISO 8601
(YYYY-MM-DD) Example: "2022-01-01"
@@ -202,16 +311,60 @@ class Representation(BaseModel):
natural_person: Optional[RepresentationNaturalPerson] = None
+class Insolvency(BaseModel):
+ """
+ Basic information about an insolvency proceeding of the company.
+ Use the insolvency endpoint to retrieve all events of the proceeding.
+ """
+
+ id: str
+ """Unique identifier of the insolvency proceeding."""
+
+ case_number: str
+ """Case number of the proceeding at the court. Example: "36d IN 3382/25" """
+
+ court: str
+ """Insolvency court handling the proceeding."""
+
+ current_status: InsolvencyStatus
+ """Current status of the insolvency proceeding."""
+
+ administration_kind: Optional[InsolvencyAdministrationKind] = None
+ """Kind of administration ordered for the proceeding."""
+
+ closed_at: Optional[datetime.date] = None
+ """Date the proceeding was closed. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ opened_at: Optional[datetime.date] = None
+ """Date the proceeding was opened. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ proceeding_kind: Optional[InsolvencyProceedingKind] = None
+ """Kind of insolvency proceeding."""
+
+
class CompanyGetDetailsV1Response(BaseModel):
id: str
"""Unique company identifier. Example: DE-HRB-F1103-267645"""
+ acquisitions: List[Acquisition]
+ """
+ Companies that were merged into this company (Verschmelzung durch Aufnahme, as
+ the acquiring entity).
+ """
+
address: CompanyAddress
"""Current registered address of the company."""
addresses: List[CompanyAddress]
"""Historical addresses. Shows how the company address changed over time."""
+ asset_spin_offs: List[AssetSpinOff]
+ """Spin-offs (Ausgliederung, § 123 Abs.
+
+ 3 UmwG) in which this company transferred assets to another company as the
+ transferring entity.
+ """
+
capital: Optional[CompanyCapital] = None
"""Current registered capital of the company."""
@@ -224,7 +377,7 @@ class CompanyGetDetailsV1Response(BaseModel):
documents: List[CompanyDocument]
"""Available official documents related to the company."""
- incorporated_at: str
+ incorporated_at: datetime.date
"""
Date when the company was officially registered. Format: ISO 8601 (YYYY-MM-DD)
Example: "2022-01-01"
@@ -242,18 +395,32 @@ class CompanyGetDetailsV1Response(BaseModel):
Haftung
"""
+ merged_into: Optional[MergedInto] = None
+ """
+ If the company ceased to exist through a merger (Verschmelzung), the company it
+ was merged into.
+ """
+
name: CompanyName
"""Current official name of the company."""
names: List[CompanyName]
"""Historical company names. Shows how the company name changed over time."""
- notarized_at: Optional[str] = None
+ notarized_at: Optional[datetime.date] = None
"""
Date of the notarized company agreement (Gesellschaftsvertrag or Satzung).
Format: ISO 8601 (YYYY-MM-DD) Example: "2021-12-21"
"""
+ profit_transfer_agreement: Optional[ProfitTransferAgreement] = None
+ """
+ The company's current profit and loss transfer agreement
+ (Gewinnabführungsvertrag), if one exists. The referenced company is the parent
+ receiving this company's profit (Organträger). Null if the company has no active
+ agreement.
+ """
+
purpose: Optional[CompanyPurpose] = None
"""Current official business purpose of the company."""
@@ -295,11 +462,17 @@ class CompanyGetDetailsV1Response(BaseModel):
- liquidation: In the process of being dissolved
"""
- terminated_at: Optional[str] = None
+ terminated_at: Optional[datetime.date] = None
"""
Date when the company was officially terminated (if applicable). Format: ISO
8601 (YYYY-MM-DD) Example: "2024-01-01"
"""
+ insolvencies: Optional[List[Insolvency]] = None
+ """
+ Insolvency proceedings of the company, if any. Contains basic information per
+ proceeding; use the insolvency endpoint to retrieve all events of a proceeding.
+ """
+
lei: Optional[str] = None
"""Legal Entity Identifier (LEI), if available."""
diff --git a/src/openregister/types/company_get_financials_v1_response.py b/src/openregister/types/company_get_financials_v1_response.py
index 1dfb7e8..b772889 100644
--- a/src/openregister/types/company_get_financials_v1_response.py
+++ b/src/openregister/types/company_get_financials_v1_response.py
@@ -2,8 +2,8 @@
from __future__ import annotations
+import datetime
from typing import List, Optional
-from datetime import date
from .._models import BaseModel
@@ -45,7 +45,7 @@ class Indicator(BaseModel):
current_assets: Optional[int] = None
"""The current assets of that year (in cents)."""
- date: str
+ date: datetime.date
"""
Date to which this financial indicators apply. Format: ISO 8601 (YYYY-MM-DD)
Example: "2022-01-01"
@@ -207,7 +207,8 @@ class Report(BaseModel):
passiva: "ReportTable"
- report_end_date: date
+ report_end_date: datetime.date
+ """Format: ISO 8601 (YYYY-MM-DD)"""
report_id: str
"""
@@ -215,7 +216,8 @@ class Report(BaseModel):
f47ac10b-58cc-4372-a567-0e02b2c3d479
"""
- report_start_date: Optional[date] = None
+ report_start_date: Optional[datetime.date] = None
+ """Format: ISO 8601 (YYYY-MM-DD)"""
sources: List[ReportSource]
"""Sources of the report data. Presigned URLs accessible for 30 minutes."""
diff --git a/src/openregister/types/company_get_holdings_v1_response.py b/src/openregister/types/company_get_holdings_v1_response.py
index b0f8fef..d6ff640 100644
--- a/src/openregister/types/company_get_holdings_v1_response.py
+++ b/src/openregister/types/company_get_holdings_v1_response.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import List, Optional
+from datetime import date
from .._models import BaseModel
from .company_relation_type import CompanyRelationType
@@ -12,7 +13,7 @@ class Holding(BaseModel):
company_id: str
"""Unique company identifier. Example: DE-HRB-F1103-267645"""
- end: Optional[str] = None
+ end: Optional[date] = None
"""
Date when the ownership ended. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
@@ -30,7 +31,7 @@ class Holding(BaseModel):
relation_type: CompanyRelationType
"""Type of relationship between the entity and the company."""
- start: Optional[str] = None
+ start: Optional[date] = None
"""
Date when the ownership started. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
diff --git a/src/openregister/types/company_get_owners_v1_response.py b/src/openregister/types/company_get_owners_v1_response.py
index 7ff1062..6067d3a 100644
--- a/src/openregister/types/company_get_owners_v1_response.py
+++ b/src/openregister/types/company_get_owners_v1_response.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import List, Optional
+from datetime import date
from .source import Source
from .._models import BaseModel
@@ -38,7 +39,7 @@ class Owner(BaseModel):
relation_type: CompanyRelationType
"""Type of relationship between the entity and the company."""
- start: Optional[str] = None
+ start: Optional[date] = None
"""Date when the relation started.
Only available for some types of owners. Format: ISO 8601 (YYYY-MM-DD) Example:
diff --git a/src/openregister/types/company_name.py b/src/openregister/types/company_name.py
index eb9d198..9cabf9c 100644
--- a/src/openregister/types/company_name.py
+++ b/src/openregister/types/company_name.py
@@ -1,5 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from datetime import date
+
from .._models import BaseModel
from .company_legal_form import CompanyLegalForm
@@ -19,7 +21,7 @@ class CompanyName(BaseModel):
Technologies UG (haftungsbeschränkt)"
"""
- start_date: str
+ start_date: date
"""
Date when this name became effective. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
diff --git a/src/openregister/types/company_purpose.py b/src/openregister/types/company_purpose.py
index 3ceff8f..0941fb6 100644
--- a/src/openregister/types/company_purpose.py
+++ b/src/openregister/types/company_purpose.py
@@ -1,5 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from datetime import date
+
from .._models import BaseModel
__all__ = ["CompanyPurpose"]
@@ -12,7 +14,7 @@ class CompanyPurpose(BaseModel):
is the registered purpose as stated in official documents.
"""
- start_date: str
+ start_date: date
"""
Date when this purpose became effective. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
diff --git a/src/openregister/types/company_register.py b/src/openregister/types/company_register.py
index 51a542b..53f461b 100644
--- a/src/openregister/types/company_register.py
+++ b/src/openregister/types/company_register.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import Optional
+from datetime import date
from .._models import BaseModel
from .company_register_type import CompanyRegisterType
@@ -24,7 +25,7 @@ class CompanyRegister(BaseModel):
company_id: Optional[str] = None
"""Unique company identifier. Example: DE-HRB-F1103-267645"""
- start_date: Optional[str] = None
+ start_date: Optional[date] = None
"""
Date when this registration information became effective. Format: ISO 8601
(YYYY-MM-DD) Example: "2022-01-01"
diff --git a/src/openregister/types/company_search_response_item.py b/src/openregister/types/company_search_response_item.py
index e406cbc..c1f4ccc 100644
--- a/src/openregister/types/company_search_response_item.py
+++ b/src/openregister/types/company_search_response_item.py
@@ -6,13 +6,44 @@
from .company_legal_form import CompanyLegalForm
from .company_register_type import CompanyRegisterType
-__all__ = ["CompanySearchResponseItem"]
+__all__ = ["CompanySearchResponseItem", "Address"]
+
+
+class Address(BaseModel):
+ """Current registered address of the company, taken from the search index."""
+
+ city: str
+ """City or locality name. Example: "Berlin" """
+
+ country: str
+ """Country of the address using ISO 3166-1 alpha-2 code. Example: "DE" for Germany"""
+
+ formatted_value: str
+ """
+ Complete address formatted as a single string. Example: "Musterstraße 1, 10117
+ Berlin"
+ """
+
+ extra: Optional[str] = None
+ """
+ Additional address information such as c/o or attention line. Example: "c/o Max
+ Mustermann"
+ """
+
+ postal_code: Optional[str] = None
+ """Postal or ZIP code. Example: "10117" """
+
+ street: Optional[str] = None
+ """Street name and number. Example: "Musterstraße 1" """
class CompanySearchResponseItem(BaseModel):
active: bool
"""Company status - true if active, false if inactive."""
+ address: Optional[Address] = None
+ """Current registered address of the company, taken from the search index."""
+
company_id: str
"""Unique company identifier. Example: DE-HRB-F1103-267645"""
@@ -31,6 +62,9 @@ class CompanySearchResponseItem(BaseModel):
name: str
"""Official registered company name. Example: "Max Mustermann GmbH" """
+ purpose: Optional[str] = None
+ """Current official business purpose of the company, taken from the search index."""
+
register_court: str
"""Court where the company is registered. Example: "Berlin (Charlottenburg)" """
diff --git a/src/openregister/types/insolvency_administration_kind.py b/src/openregister/types/insolvency_administration_kind.py
new file mode 100644
index 0000000..1b08752
--- /dev/null
+++ b/src/openregister/types/insolvency_administration_kind.py
@@ -0,0 +1,7 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing_extensions import Literal, TypeAlias
+
+__all__ = ["InsolvencyAdministrationKind"]
+
+InsolvencyAdministrationKind: TypeAlias = Literal["external_administration", "self_administration", "protective_shield"]
diff --git a/src/openregister/types/insolvency_debtor_kind.py b/src/openregister/types/insolvency_debtor_kind.py
new file mode 100644
index 0000000..bedba7f
--- /dev/null
+++ b/src/openregister/types/insolvency_debtor_kind.py
@@ -0,0 +1,7 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing_extensions import Literal, TypeAlias
+
+__all__ = ["InsolvencyDebtorKind"]
+
+InsolvencyDebtorKind: TypeAlias = Literal["legal_person", "natural_person"]
diff --git a/src/openregister/types/insolvency_get_details_v1_response.py b/src/openregister/types/insolvency_get_details_v1_response.py
new file mode 100644
index 0000000..2ee42bb
--- /dev/null
+++ b/src/openregister/types/insolvency_get_details_v1_response.py
@@ -0,0 +1,189 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import date, datetime
+from typing_extensions import Literal
+
+from .._models import BaseModel
+from .insolvency_status import InsolvencyStatus
+from .insolvency_debtor_kind import InsolvencyDebtorKind
+from .insolvency_proceeding_kind import InsolvencyProceedingKind
+from .insolvency_administration_kind import InsolvencyAdministrationKind
+
+__all__ = ["InsolvencyGetDetailsV1Response", "Event", "EventDetails", "EventDetailsMeeting"]
+
+
+class EventDetailsMeeting(BaseModel):
+ """A creditor meeting or hearing announced in the publication."""
+
+ kind: str
+
+ at: Optional[str] = None
+
+ location: Optional[str] = None
+
+
+class EventDetails(BaseModel):
+ """Structured details extracted from the publication, where available."""
+
+ insolvency_grounds: List[str]
+
+ meetings: List[EventDetailsMeeting]
+
+ administrator_address: Optional[str] = None
+
+ administrator_name: Optional[str] = None
+
+ claims_filing_deadline: Optional[str] = None
+
+ closed_at: Optional[str] = None
+
+ discharge_granted: Optional[bool] = None
+
+ distribution_available: Optional[str] = None
+
+ distribution_claims_total: Optional[str] = None
+
+
+class Event(BaseModel):
+ """
+ A single published event of an insolvency proceeding, derived from an
+ official court publication.
+ """
+
+ id: str
+ """Unique identifier of the event."""
+
+ details: EventDetails
+ """Structured details extracted from the publication, where available."""
+
+ event_type: Literal[
+ "preliminary_measures",
+ "preliminary_measures_lifted",
+ "proceedings_opened",
+ "rejected_insufficient_assets",
+ "in_proceeding_decision",
+ "mass_insufficiency_notified",
+ "distribution_announced",
+ "distribution_record_filed",
+ "final_distribution_announced",
+ "proceedings_lifted",
+ "proceedings_discontinued",
+ "proceedings_terminated",
+ "post_termination_decision",
+ "subsequent_distribution_ordered",
+ "discharge_pending",
+ "discharge_granted",
+ "discharge_denied",
+ "discharge_revoked",
+ "plan_confirmed",
+ "plan_supervision_ordered",
+ "plan_supervision_terminated",
+ "other",
+ ]
+ """Lifecycle event type of the insolvency proceeding."""
+
+ published_at: date
+ """Date the event was published by the court. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ report_type: Literal[
+ "security_measures",
+ "rejection_for_insufficiency_of_assets",
+ "openings",
+ "decisions_in_proceedings",
+ "misc",
+ "decisions_after_termination",
+ "distribution_lists",
+ "decisions_in_discharge_proceedings",
+ "supervised_insolvency_plans",
+ ]
+ """Category of the official publication the event was derived from."""
+
+ summary: str
+ """Short summary of the publication."""
+
+ decision_date: Optional[date] = None
+ """Date of the court decision, if published. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ effective_at: Optional[datetime] = None
+ """Date the decision takes effect, if published."""
+
+
+class InsolvencyGetDetailsV1Response(BaseModel):
+ """An insolvency proceeding with all of its published events."""
+
+ id: str
+ """Unique identifier of the insolvency proceeding."""
+
+ case_number: str
+ """Case number of the proceeding at the court. Example: "36d IN 3382/25" """
+
+ company_id: Optional[str] = None
+ """Unique company identifier of the debtor, if the debtor is a registered company.
+
+ Example: DE-HRB-F1103-267645
+ """
+
+ court: str
+ """Insolvency court handling the proceeding."""
+
+ current_status: InsolvencyStatus
+ """Current status of the insolvency proceeding."""
+
+ debtor_name: str
+ """Name of the debtor as published by the court."""
+
+ events: List[Event]
+ """All published events of the proceeding, ordered by date."""
+
+ insolvency_grounds: List[str]
+ """Grounds for the insolvency (e.g. Zahlungsunfähigkeit, Überschuldung)."""
+
+ administration_kind: Optional[InsolvencyAdministrationKind] = None
+ """Kind of administration ordered for the proceeding."""
+
+ administrator_address: Optional[str] = None
+ """Address of the insolvency administrator."""
+
+ administrator_name: Optional[str] = None
+ """Name of the insolvency administrator."""
+
+ claims_filing_deadline: Optional[date] = None
+ """Deadline for creditors to file their claims. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ closed_at: Optional[date] = None
+ """Date the proceeding was closed. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ debtor_kind: Optional[InsolvencyDebtorKind] = None
+ """Kind of debtor the proceeding concerns.
+
+ - legal_person: legal entities (companies, associations, etc.)
+ - natural_person: private individuals
+ """
+
+ debtor_legal_form: Optional[str] = None
+ """Legal form of the debtor as published by the court."""
+
+ distribution_available: Optional[float] = None
+ """Amount available for distribution, in euros."""
+
+ distribution_claims_total: Optional[float] = None
+ """Total registered claims in the distribution, in euros."""
+
+ first_event_at: Optional[date] = None
+ """
+ Publication date of the first known event of the proceeding. Format: ISO 8601
+ (YYYY-MM-DD)
+ """
+
+ last_event_at: Optional[date] = None
+ """
+ Publication date of the most recent known event of the proceeding. Format: ISO
+ 8601 (YYYY-MM-DD)
+ """
+
+ opened_at: Optional[date] = None
+ """Date the proceeding was opened. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ proceeding_kind: Optional[InsolvencyProceedingKind] = None
+ """Kind of insolvency proceeding."""
diff --git a/src/openregister/types/insolvency_proceeding_kind.py b/src/openregister/types/insolvency_proceeding_kind.py
new file mode 100644
index 0000000..8b80daf
--- /dev/null
+++ b/src/openregister/types/insolvency_proceeding_kind.py
@@ -0,0 +1,7 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing_extensions import Literal, TypeAlias
+
+__all__ = ["InsolvencyProceedingKind"]
+
+InsolvencyProceedingKind: TypeAlias = Literal["regular_insolvency", "consumer_insolvency"]
diff --git a/src/openregister/types/insolvency_status.py b/src/openregister/types/insolvency_status.py
new file mode 100644
index 0000000..5b941da
--- /dev/null
+++ b/src/openregister/types/insolvency_status.py
@@ -0,0 +1,20 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing_extensions import Literal, TypeAlias
+
+__all__ = ["InsolvencyStatus"]
+
+InsolvencyStatus: TypeAlias = Literal[
+ "preliminary",
+ "opened",
+ "rejected_no_assets",
+ "mass_insufficient",
+ "plan_supervised",
+ "lifted",
+ "discontinued",
+ "discharge_pending",
+ "discharge_granted",
+ "discharge_denied",
+ "discharge_revoked",
+ "unknown",
+]
diff --git a/src/openregister/types/monitor_create_params.py b/src/openregister/types/monitor_create_params.py
index 908fc21..24aa8f5 100644
--- a/src/openregister/types/monitor_create_params.py
+++ b/src/openregister/types/monitor_create_params.py
@@ -21,7 +21,14 @@ class MonitorCreateParams(TypedDict, total=False):
preferences: Required[
List[
Literal[
- "basic", "representation", "financials", "documents", "ownership", "holdings", "management_positions"
+ "basic",
+ "representation",
+ "financials",
+ "documents",
+ "ownership",
+ "holdings",
+ "management_positions",
+ "insolvencies",
]
]
]
diff --git a/src/openregister/types/monitor_create_response.py b/src/openregister/types/monitor_create_response.py
index 8ff73d2..62d24fe 100644
--- a/src/openregister/types/monitor_create_response.py
+++ b/src/openregister/types/monitor_create_response.py
@@ -22,7 +22,16 @@ class MonitorCreateResponse(BaseModel):
"""Type of the entity to monitor."""
preferences: List[
- Literal["basic", "representation", "financials", "documents", "ownership", "holdings", "management_positions"]
+ Literal[
+ "basic",
+ "representation",
+ "financials",
+ "documents",
+ "ownership",
+ "holdings",
+ "management_positions",
+ "insolvencies",
+ ]
]
"""
Preferences for the entity to monitor. Use `WebhookMonitorCompanyPreference`
diff --git a/src/openregister/types/monitor_list_response.py b/src/openregister/types/monitor_list_response.py
index 265a983..593ace2 100644
--- a/src/openregister/types/monitor_list_response.py
+++ b/src/openregister/types/monitor_list_response.py
@@ -22,7 +22,16 @@ class Item(BaseModel):
"""Type of the entity to monitor."""
preferences: List[
- Literal["basic", "representation", "financials", "documents", "ownership", "holdings", "management_positions"]
+ Literal[
+ "basic",
+ "representation",
+ "financials",
+ "documents",
+ "ownership",
+ "holdings",
+ "management_positions",
+ "insolvencies",
+ ]
]
"""
Preferences for the entity to monitor. Use `WebhookMonitorCompanyPreference`
diff --git a/src/openregister/types/person_get_details_v1_response.py b/src/openregister/types/person_get_details_v1_response.py
index cb69824..5b93f69 100644
--- a/src/openregister/types/person_get_details_v1_response.py
+++ b/src/openregister/types/person_get_details_v1_response.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import List, Optional
+from datetime import date
from .._models import BaseModel
@@ -19,13 +20,13 @@ class ManagementPosition(BaseModel):
role: str
"""Role of the person in the company. Example: "DIRECTOR" """
- start_date: str
+ start_date: date
"""
Date when the person started the management position. Format: ISO 8601
(YYYY-MM-DD) Example: "2022-01-01"
"""
- end_date: Optional[str] = None
+ end_date: Optional[date] = None
"""
Date when the person ended the management position. Format: ISO 8601
(YYYY-MM-DD) Example: "2023-01-01"
@@ -42,7 +43,7 @@ class PersonGetDetailsV1Response(BaseModel):
city: str
"""City of the person."""
- date_of_birth: Optional[str] = None
+ date_of_birth: Optional[date] = None
"""
Date of birth of the person. Format: ISO 8601 (YYYY-MM-DD) Example: "1990-01-01"
"""
diff --git a/src/openregister/types/person_get_holdings_v1_response.py b/src/openregister/types/person_get_holdings_v1_response.py
index ff11d2a..f308119 100644
--- a/src/openregister/types/person_get_holdings_v1_response.py
+++ b/src/openregister/types/person_get_holdings_v1_response.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import List, Optional
+from datetime import date
from .._models import BaseModel
from .company_relation_type import CompanyRelationType
@@ -12,7 +13,7 @@ class Holding(BaseModel):
company_id: str
"""Unique company identifier. Example: DE-HRB-F1103-267645"""
- end: Optional[str] = None
+ end: Optional[date] = None
"""
Date when the ownership ended. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
@@ -30,7 +31,7 @@ class Holding(BaseModel):
relation_type: CompanyRelationType
"""Type of relationship between the entity and the company."""
- start: Optional[str] = None
+ start: Optional[date] = None
"""
Date when the ownership started. Format: ISO 8601 (YYYY-MM-DD) Example:
"2022-01-01"
diff --git a/src/openregister/types/search_find_companies_v1_params.py b/src/openregister/types/search_find_companies_v1_params.py
index 1bf5fae..1e1c7bc 100644
--- a/src/openregister/types/search_find_companies_v1_params.py
+++ b/src/openregister/types/search_find_companies_v1_params.py
@@ -102,6 +102,10 @@ class Filter(SearchFilterBaseParam, total=False):
"purpose",
"has_lei",
"lei",
+ "had_insolvency",
+ "has_open_insolvency",
+ "insolvency_stage",
+ "insolvency_opened_at",
]
]
diff --git a/src/openregister/types/search_find_insolvencies_v1_params.py b/src/openregister/types/search_find_insolvencies_v1_params.py
new file mode 100644
index 0000000..312bd93
--- /dev/null
+++ b/src/openregister/types/search_find_insolvencies_v1_params.py
@@ -0,0 +1,65 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Iterable
+from typing_extensions import Literal, Required, TypedDict
+
+from .search_filter_base_param import SearchFilterBaseParam
+from .search_request_pagination_param import SearchRequestPaginationParam
+
+__all__ = ["SearchFindInsolvenciesV1Params", "Filter", "Query"]
+
+
+class SearchFindInsolvenciesV1Params(TypedDict, total=False):
+ filters: Iterable[Filter]
+ """Filters to filter insolvency proceedings."""
+
+ pagination: SearchRequestPaginationParam
+ """Pagination parameters."""
+
+ query: Query
+ """Search query to filter insolvency proceedings."""
+
+
+class Filter(SearchFilterBaseParam, total=False):
+ """Filter by field.
+
+ The property sets `value`, `values`, `keywords` and `min`/`max`
+ are mutually exclusive. Dates must be YYYY-MM-DD.
+ """
+
+ field: Required[
+ Literal[
+ "debtor_kind",
+ "debtor_legal_form",
+ "court",
+ "city",
+ "current_status",
+ "has_open_insolvency",
+ "proceeding_kind",
+ "administration_kind",
+ "insolvency_grounds",
+ "opened_at",
+ "closed_at",
+ "last_event_at",
+ "claims_filing_deadline",
+ "company_id",
+ "person_id",
+ ]
+ ]
+ """
+ Field of the insolvency proceeding to filter on. Date fields (opened_at,
+ closed_at, last_event_at, claims_filing_deadline) support min/max ranges with
+ values in the format YYYY-MM-DD.
+ """
+
+
+class Query(TypedDict, total=False):
+ """Search query to filter insolvency proceedings."""
+
+ value: Required[str]
+ """
+ Search query to filter insolvency proceedings. Matches against debtor name, case
+ number, administrator name and court.
+ """
diff --git a/src/openregister/types/search_find_insolvencies_v1_response.py b/src/openregister/types/search_find_insolvencies_v1_response.py
new file mode 100644
index 0000000..d974ccb
--- /dev/null
+++ b/src/openregister/types/search_find_insolvencies_v1_response.py
@@ -0,0 +1,88 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import date
+
+from .._models import BaseModel
+from .pagination import Pagination
+from .insolvency_status import InsolvencyStatus
+from .insolvency_debtor_kind import InsolvencyDebtorKind
+from .insolvency_proceeding_kind import InsolvencyProceedingKind
+from .insolvency_administration_kind import InsolvencyAdministrationKind
+
+__all__ = ["SearchFindInsolvenciesV1Response", "Result"]
+
+
+class Result(BaseModel):
+ id: str
+ """Unique insolvency proceeding identifier."""
+
+ administration_kind: Optional[InsolvencyAdministrationKind] = None
+ """Kind of administration ordered for the proceeding."""
+
+ administrator_name: Optional[str] = None
+ """Name of the insolvency administrator."""
+
+ case_number: str
+ """
+ Case number of the proceeding at the insolvency court. Example: "36a IN 2792/24"
+ """
+
+ city: Optional[str] = None
+ """City of the debtor. Example: "Berlin" """
+
+ closed_at: Optional[date] = None
+ """Date the proceeding was closed. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ company_id: Optional[str] = None
+ """
+ Unique company identifier of the debtor, if the debtor could be matched to a
+ registered company. Example: DE-HRB-F1103-267645
+ """
+
+ court: str
+ """Insolvency court handling the proceeding. Example: "Charlottenburg" """
+
+ current_status: InsolvencyStatus
+ """Current status of the proceeding."""
+
+ debtor_kind: Optional[InsolvencyDebtorKind] = None
+ """Kind of debtor the proceeding concerns.
+
+ - legal_person: legal entities (companies, associations, etc.)
+ - natural_person: private individuals
+ """
+
+ debtor_legal_form: Optional[str] = None
+ """Legal form of the debtor, if the debtor is a company. Example: "gmbh" """
+
+ debtor_name: str
+ """Name of the debtor. Example: "Max Mustermann GmbH" """
+
+ has_open_insolvency: bool
+ """Whether the proceeding is currently open."""
+
+ insolvency_grounds: Optional[List[str]] = None
+ """Grounds for the insolvency, e.g. "illiquidity", "over_indebtedness"."""
+
+ last_event_at: Optional[date] = None
+ """Date of the most recent event in the proceeding. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ opened_at: Optional[date] = None
+ """Date the proceeding was opened. Format: ISO 8601 (YYYY-MM-DD)"""
+
+ person_id: Optional[str] = None
+ """
+ Unique person identifier of the debtor, if the debtor could be matched to a
+ person.
+ """
+
+ proceeding_kind: Optional[InsolvencyProceedingKind] = None
+ """Kind of insolvency proceeding."""
+
+
+class SearchFindInsolvenciesV1Response(BaseModel):
+ pagination: Pagination
+
+ results: List[Result]
+ """List of insolvency proceedings matching the search criteria."""
diff --git a/src/openregister/types/search_find_person_v1_response.py b/src/openregister/types/search_find_person_v1_response.py
index fcac4a8..47b679f 100644
--- a/src/openregister/types/search_find_person_v1_response.py
+++ b/src/openregister/types/search_find_person_v1_response.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from typing import List, Optional
+from datetime import date
from .._models import BaseModel
from .pagination import Pagination
@@ -18,7 +19,7 @@ class Result(BaseModel):
city: Optional[str] = None
"""City of the person. Example: "Berlin" """
- date_of_birth: str
+ date_of_birth: date
"""
Date of birth of the person. Format: ISO 8601 (YYYY-MM-DD) Example: "1990-01-01"
"""
diff --git a/src/openregister/types/transparenzregister/transparenzregister_report.py b/src/openregister/types/transparenzregister/transparenzregister_report.py
index 19d5ec1..4baca94 100644
--- a/src/openregister/types/transparenzregister/transparenzregister_report.py
+++ b/src/openregister/types/transparenzregister/transparenzregister_report.py
@@ -16,7 +16,7 @@ class TransparenzregisterReport(BaseModel):
"""Parsed Transparenzregister extract report limited to UBO-relevant fields."""
created_at: Optional[date] = None
- """Extract creation date."""
+ """Extract creation date. Format: ISO 8601 (YYYY-MM-DD)"""
fictional_ubo_reason: Optional[str] = None
"""Reason indicating no natural person UBO could be determined."""
diff --git a/src/openregister/types/transparenzregister/transparenzregister_status_flags.py b/src/openregister/types/transparenzregister/transparenzregister_status_flags.py
index 44d08c4..8776936 100644
--- a/src/openregister/types/transparenzregister/transparenzregister_status_flags.py
+++ b/src/openregister/types/transparenzregister/transparenzregister_status_flags.py
@@ -16,5 +16,6 @@ class TransparenzregisterStatusFlags(BaseModel):
deleted: Optional[bool] = None
deletion_date: Optional[date] = None
+ """Format: ISO 8601 (YYYY-MM-DD)"""
discrepancy_note: Optional[str] = None
diff --git a/src/openregister/types/transparenzregister/transparenzregister_ubo_natural_person.py b/src/openregister/types/transparenzregister/transparenzregister_ubo_natural_person.py
index bb2da46..5dd451e 100644
--- a/src/openregister/types/transparenzregister/transparenzregister_ubo_natural_person.py
+++ b/src/openregister/types/transparenzregister/transparenzregister_ubo_natural_person.py
@@ -14,6 +14,7 @@ class TransparenzregisterUboNaturalPerson(BaseModel):
country: Optional[str] = None
date_of_birth: Optional[date] = None
+ """Format: ISO 8601 (YYYY-MM-DD)"""
first_name: Optional[str] = None
diff --git a/src/openregister/types/transparenzregister/transparenzregister_validity_point.py b/src/openregister/types/transparenzregister/transparenzregister_validity_point.py
index b99ada6..8829faf 100644
--- a/src/openregister/types/transparenzregister/transparenzregister_validity_point.py
+++ b/src/openregister/types/transparenzregister/transparenzregister_validity_point.py
@@ -10,5 +10,6 @@
class TransparenzregisterValidityPoint(BaseModel):
date: Optional[datetime.date] = None
+ """Format: ISO 8601 (YYYY-MM-DD)"""
note: Optional[str] = None
diff --git a/src/openregister/types/usage_get_credits_v1_response.py b/src/openregister/types/usage_get_credits_v1_response.py
new file mode 100644
index 0000000..0900d7f
--- /dev/null
+++ b/src/openregister/types/usage_get_credits_v1_response.py
@@ -0,0 +1,34 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from datetime import datetime
+from typing_extensions import Literal
+
+from .._models import BaseModel
+
+__all__ = ["UsageGetCreditsV1Response", "Period"]
+
+
+class Period(BaseModel):
+ reset_at: datetime
+
+ type: Literal["billing_cycle", "rolling_30_days"]
+ """
+ billing_cycle for paid plans; rolling_30_days for the free plan, where the
+ window starts with the first request.
+ """
+
+
+class UsageGetCreditsV1Response(BaseModel):
+ included_credits: int
+
+ overage_credits: int
+ """Credits above the included allowance."""
+
+ paid: bool
+
+ period: Period
+
+ remaining_credits: int
+ """Never negative; zero once usage exceeds included credits."""
+
+ used_credits: int
diff --git a/tests/api_resources/test_insolvency.py b/tests/api_resources/test_insolvency.py
new file mode 100644
index 0000000..041cafb
--- /dev/null
+++ b/tests/api_resources/test_insolvency.py
@@ -0,0 +1,108 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import os
+from typing import Any, cast
+
+import pytest
+
+from tests.utils import assert_matches_type
+from openregister import Openregister, AsyncOpenregister
+from openregister.types import InsolvencyGetDetailsV1Response
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestInsolvency:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_method_get_details_v1(self, client: Openregister) -> None:
+ insolvency = client.insolvency.get_details_v1(
+ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
+ )
+ assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_raw_response_get_details_v1(self, client: Openregister) -> None:
+ response = client.insolvency.with_raw_response.get_details_v1(
+ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ insolvency = response.parse()
+ assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_streaming_response_get_details_v1(self, client: Openregister) -> None:
+ with client.insolvency.with_streaming_response.get_details_v1(
+ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ insolvency = response.parse()
+ assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_path_params_get_details_v1(self, client: Openregister) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `insolvency_id` but received ''"):
+ client.insolvency.with_raw_response.get_details_v1(
+ "",
+ )
+
+
+class TestAsyncInsolvency:
+ parametrize = pytest.mark.parametrize(
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
+ )
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_method_get_details_v1(self, async_client: AsyncOpenregister) -> None:
+ insolvency = await async_client.insolvency.get_details_v1(
+ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
+ )
+ assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_raw_response_get_details_v1(self, async_client: AsyncOpenregister) -> None:
+ response = await async_client.insolvency.with_raw_response.get_details_v1(
+ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ insolvency = await response.parse()
+ assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_streaming_response_get_details_v1(self, async_client: AsyncOpenregister) -> None:
+ async with async_client.insolvency.with_streaming_response.get_details_v1(
+ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ insolvency = await response.parse()
+ assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_path_params_get_details_v1(self, async_client: AsyncOpenregister) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `insolvency_id` but received ''"):
+ await async_client.insolvency.with_raw_response.get_details_v1(
+ "",
+ )
diff --git a/tests/api_resources/test_search.py b/tests/api_resources/test_search.py
index 4e636de..c1ede80 100644
--- a/tests/api_resources/test_search.py
+++ b/tests/api_resources/test_search.py
@@ -12,6 +12,7 @@
from openregister.types import (
CompanySearch,
SearchFindPersonV1Response,
+ SearchFindInsolvenciesV1Response,
SearchLookupCompanyByURLResponse,
SearchAutocompleteCompaniesV1Response,
)
@@ -111,6 +112,56 @@ def test_streaming_response_find_companies_v1(self, client: Openregister) -> Non
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_method_find_insolvencies_v1(self, client: Openregister) -> None:
+ search = client.search.find_insolvencies_v1()
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_method_find_insolvencies_v1_with_all_params(self, client: Openregister) -> None:
+ search = client.search.find_insolvencies_v1(
+ filters=[
+ {
+ "keywords": ["string"],
+ "max": "max",
+ "min": "min",
+ "value": "value",
+ "values": ["string"],
+ "field": "debtor_kind",
+ }
+ ],
+ pagination={
+ "page": 0,
+ "per_page": 0,
+ },
+ query={"value": "value"},
+ )
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_raw_response_find_insolvencies_v1(self, client: Openregister) -> None:
+ response = client.search.with_raw_response.find_insolvencies_v1()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ search = response.parse()
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_streaming_response_find_insolvencies_v1(self, client: Openregister) -> None:
+ with client.search.with_streaming_response.find_insolvencies_v1() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ search = response.parse()
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@pytest.mark.skip(reason="Mock server tests are disabled")
@parametrize
def test_method_find_person_v1(self, client: Openregister) -> None:
@@ -290,6 +341,56 @@ async def test_streaming_response_find_companies_v1(self, async_client: AsyncOpe
assert cast(Any, response.is_closed) is True
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_method_find_insolvencies_v1(self, async_client: AsyncOpenregister) -> None:
+ search = await async_client.search.find_insolvencies_v1()
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_method_find_insolvencies_v1_with_all_params(self, async_client: AsyncOpenregister) -> None:
+ search = await async_client.search.find_insolvencies_v1(
+ filters=[
+ {
+ "keywords": ["string"],
+ "max": "max",
+ "min": "min",
+ "value": "value",
+ "values": ["string"],
+ "field": "debtor_kind",
+ }
+ ],
+ pagination={
+ "page": 0,
+ "per_page": 0,
+ },
+ query={"value": "value"},
+ )
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_raw_response_find_insolvencies_v1(self, async_client: AsyncOpenregister) -> None:
+ response = await async_client.search.with_raw_response.find_insolvencies_v1()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ search = await response.parse()
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_streaming_response_find_insolvencies_v1(self, async_client: AsyncOpenregister) -> None:
+ async with async_client.search.with_streaming_response.find_insolvencies_v1() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ search = await response.parse()
+ assert_matches_type(SearchFindInsolvenciesV1Response, search, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@pytest.mark.skip(reason="Mock server tests are disabled")
@parametrize
async def test_method_find_person_v1(self, async_client: AsyncOpenregister) -> None:
diff --git a/tests/api_resources/test_usage.py b/tests/api_resources/test_usage.py
new file mode 100644
index 0000000..fddeeb8
--- /dev/null
+++ b/tests/api_resources/test_usage.py
@@ -0,0 +1,80 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import os
+from typing import Any, cast
+
+import pytest
+
+from tests.utils import assert_matches_type
+from openregister import Openregister, AsyncOpenregister
+from openregister.types import UsageGetCreditsV1Response
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestUsage:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_method_get_credits_v1(self, client: Openregister) -> None:
+ usage = client.usage.get_credits_v1()
+ assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_raw_response_get_credits_v1(self, client: Openregister) -> None:
+ response = client.usage.with_raw_response.get_credits_v1()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ usage = response.parse()
+ assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ def test_streaming_response_get_credits_v1(self, client: Openregister) -> None:
+ with client.usage.with_streaming_response.get_credits_v1() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ usage = response.parse()
+ assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+
+class TestAsyncUsage:
+ parametrize = pytest.mark.parametrize(
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
+ )
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_method_get_credits_v1(self, async_client: AsyncOpenregister) -> None:
+ usage = await async_client.usage.get_credits_v1()
+ assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_raw_response_get_credits_v1(self, async_client: AsyncOpenregister) -> None:
+ response = await async_client.usage.with_raw_response.get_credits_v1()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ usage = await response.parse()
+ assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"])
+
+ @pytest.mark.skip(reason="Mock server tests are disabled")
+ @parametrize
+ async def test_streaming_response_get_credits_v1(self, async_client: AsyncOpenregister) -> None:
+ async with async_client.usage.with_streaming_response.get_credits_v1() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ usage = await response.parse()
+ assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"])
+
+ assert cast(Any, response.is_closed) is True