From 1f55abc8d9ba38db51c125c16c8dde94ceb8ffda Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 11:35:26 +0000 Subject: [PATCH 1/9] feat(api): insolvencies & m&a --- .stats.yml | 8 +- api.md | 32 +++ src/openregister/_client.py | 76 +++++++- src/openregister/resources/__init__.py | 28 +++ src/openregister/resources/credits.py | 135 +++++++++++++ src/openregister/resources/insolvency.py | 164 ++++++++++++++++ src/openregister/resources/monitor.py | 18 +- src/openregister/resources/search.py | 108 +++++++++++ src/openregister/types/__init__.py | 8 + .../types/company_get_details_v1_response.py | 119 ++++++++++++ .../types/company_search_response_item.py | 36 +++- src/openregister/types/credit_get_response.py | 34 ++++ .../types/insolvency_administration_kind.py | 7 + .../types/insolvency_debtor_kind.py | 7 + .../types/insolvency_proceeding_kind.py | 7 + .../types/insolvency_retrieve_response.py | 183 ++++++++++++++++++ src/openregister/types/insolvency_status.py | 20 ++ .../types/monitor_create_params.py | 9 +- .../types/monitor_create_response.py | 11 +- .../types/monitor_list_response.py | 11 +- .../search_find_insolvencies_v1_params.py | 65 +++++++ .../search_find_insolvencies_v1_response.py | 87 +++++++++ tests/api_resources/test_credits.py | 80 ++++++++ tests/api_resources/test_insolvency.py | 108 +++++++++++ tests/api_resources/test_search.py | 101 ++++++++++ 25 files changed, 1451 insertions(+), 11 deletions(-) create mode 100644 src/openregister/resources/credits.py create mode 100644 src/openregister/resources/insolvency.py create mode 100644 src/openregister/types/credit_get_response.py create mode 100644 src/openregister/types/insolvency_administration_kind.py create mode 100644 src/openregister/types/insolvency_debtor_kind.py create mode 100644 src/openregister/types/insolvency_proceeding_kind.py create mode 100644 src/openregister/types/insolvency_retrieve_response.py create mode 100644 src/openregister/types/insolvency_status.py create mode 100644 src/openregister/types/search_find_insolvencies_v1_params.py create mode 100644 src/openregister/types/search_find_insolvencies_v1_response.py create mode 100644 tests/api_resources/test_credits.py create mode 100644 tests/api_resources/test_insolvency.py diff --git a/.stats.yml b/.stats.yml index a11b722..1ad2fcf 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-669a60a454bad37db20929372fb806f9c8cfd5077956f19b668cea5f95881444.yml +openapi_spec_hash: 4484feafcfabb1d3b895168efe9453d2 +config_hash: d97e8b486db485cf210154fbca47249d diff --git a/api.md b/api.md index b9d3c16..30612b2 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 + +# Credits + +Types: + +```python +from openregister.types import CreditGetResponse +``` + +Methods: + +- client.credits.get() -> CreditGetResponse + +# Insolvency + +Types: + +```python +from openregister.types import ( + InsolvencyAdministrationKind, + InsolvencyDebtorKind, + InsolvencyProceedingKind, + InsolvencyStatus, + InsolvencyRetrieveResponse, +) +``` + +Methods: + +- client.insolvency.retrieve(insolvency_id) -> InsolvencyRetrieveResponse diff --git a/src/openregister/_client.py b/src/openregister/_client.py index c8e2b99..d28dc2c 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 person, search, company, credits, monitor, document, insolvency, transparenzregister from .resources.person import PersonResource, AsyncPersonResource from .resources.search import SearchResource, AsyncSearchResource from .resources.company import CompanyResource, AsyncCompanyResource + from .resources.credits import CreditsResource, AsyncCreditsResource 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 credits(self) -> CreditsResource: + from .resources.credits import CreditsResource + + return CreditsResource(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 credits(self) -> AsyncCreditsResource: + from .resources.credits import AsyncCreditsResource + + return AsyncCreditsResource(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 credits(self) -> credits.CreditsResourceWithRawResponse: + from .resources.credits import CreditsResourceWithRawResponse + + return CreditsResourceWithRawResponse(self._client.credits) + + @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 credits(self) -> credits.AsyncCreditsResourceWithRawResponse: + from .resources.credits import AsyncCreditsResourceWithRawResponse + + return AsyncCreditsResourceWithRawResponse(self._client.credits) + + @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 credits(self) -> credits.CreditsResourceWithStreamingResponse: + from .resources.credits import CreditsResourceWithStreamingResponse + + return CreditsResourceWithStreamingResponse(self._client.credits) + + @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 credits(self) -> credits.AsyncCreditsResourceWithStreamingResponse: + from .resources.credits import AsyncCreditsResourceWithStreamingResponse + + return AsyncCreditsResourceWithStreamingResponse(self._client.credits) + + @cached_property + def insolvency(self) -> insolvency.AsyncInsolvencyResourceWithStreamingResponse: + from .resources.insolvency import AsyncInsolvencyResourceWithStreamingResponse + + return AsyncInsolvencyResourceWithStreamingResponse(self._client.insolvency) + Client = Openregister diff --git a/src/openregister/resources/__init__.py b/src/openregister/resources/__init__.py index 9ef628c..e4cbcc6 100644 --- a/src/openregister/resources/__init__.py +++ b/src/openregister/resources/__init__.py @@ -24,6 +24,14 @@ CompanyResourceWithStreamingResponse, AsyncCompanyResourceWithStreamingResponse, ) +from .credits import ( + CreditsResource, + AsyncCreditsResource, + CreditsResourceWithRawResponse, + AsyncCreditsResourceWithRawResponse, + CreditsResourceWithStreamingResponse, + AsyncCreditsResourceWithStreamingResponse, +) from .monitor import ( MonitorResource, AsyncMonitorResource, @@ -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", + "CreditsResource", + "AsyncCreditsResource", + "CreditsResourceWithRawResponse", + "AsyncCreditsResourceWithRawResponse", + "CreditsResourceWithStreamingResponse", + "AsyncCreditsResourceWithStreamingResponse", + "InsolvencyResource", + "AsyncInsolvencyResource", + "InsolvencyResourceWithRawResponse", + "AsyncInsolvencyResourceWithRawResponse", + "InsolvencyResourceWithStreamingResponse", + "AsyncInsolvencyResourceWithStreamingResponse", ] diff --git a/src/openregister/resources/credits.py b/src/openregister/resources/credits.py new file mode 100644 index 0000000..5943c80 --- /dev/null +++ b/src/openregister/resources/credits.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.credit_get_response import CreditGetResponse + +__all__ = ["CreditsResource", "AsyncCreditsResource"] + + +class CreditsResource(SyncAPIResource): + @cached_property + def with_raw_response(self) -> CreditsResourceWithRawResponse: + """ + 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 CreditsResourceWithRawResponse(self) + + @cached_property + def with_streaming_response(self) -> CreditsResourceWithStreamingResponse: + """ + 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 CreditsResourceWithStreamingResponse(self) + + def get( + 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, + ) -> CreditGetResponse: + """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=CreditGetResponse, + ) + + +class AsyncCreditsResource(AsyncAPIResource): + @cached_property + def with_raw_response(self) -> AsyncCreditsResourceWithRawResponse: + """ + 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 AsyncCreditsResourceWithRawResponse(self) + + @cached_property + def with_streaming_response(self) -> AsyncCreditsResourceWithStreamingResponse: + """ + 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 AsyncCreditsResourceWithStreamingResponse(self) + + async def get( + 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, + ) -> CreditGetResponse: + """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=CreditGetResponse, + ) + + +class CreditsResourceWithRawResponse: + def __init__(self, credits: CreditsResource) -> None: + self._credits = credits + + self.get = to_raw_response_wrapper( + credits.get, + ) + + +class AsyncCreditsResourceWithRawResponse: + def __init__(self, credits: AsyncCreditsResource) -> None: + self._credits = credits + + self.get = async_to_raw_response_wrapper( + credits.get, + ) + + +class CreditsResourceWithStreamingResponse: + def __init__(self, credits: CreditsResource) -> None: + self._credits = credits + + self.get = to_streamed_response_wrapper( + credits.get, + ) + + +class AsyncCreditsResourceWithStreamingResponse: + def __init__(self, credits: AsyncCreditsResource) -> None: + self._credits = credits + + self.get = async_to_streamed_response_wrapper( + credits.get, + ) diff --git a/src/openregister/resources/insolvency.py b/src/openregister/resources/insolvency.py new file mode 100644 index 0000000..0436eed --- /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_retrieve_response import InsolvencyRetrieveResponse + +__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 retrieve( + 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, + ) -> InsolvencyRetrieveResponse: + """ + 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=InsolvencyRetrieveResponse, + ) + + +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 retrieve( + 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, + ) -> InsolvencyRetrieveResponse: + """ + 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=InsolvencyRetrieveResponse, + ) + + +class InsolvencyResourceWithRawResponse: + def __init__(self, insolvency: InsolvencyResource) -> None: + self._insolvency = insolvency + + self.retrieve = to_raw_response_wrapper( + insolvency.retrieve, + ) + + +class AsyncInsolvencyResourceWithRawResponse: + def __init__(self, insolvency: AsyncInsolvencyResource) -> None: + self._insolvency = insolvency + + self.retrieve = async_to_raw_response_wrapper( + insolvency.retrieve, + ) + + +class InsolvencyResourceWithStreamingResponse: + def __init__(self, insolvency: InsolvencyResource) -> None: + self._insolvency = insolvency + + self.retrieve = to_streamed_response_wrapper( + insolvency.retrieve, + ) + + +class AsyncInsolvencyResourceWithStreamingResponse: + def __init__(self, insolvency: AsyncInsolvencyResource) -> None: + self._insolvency = insolvency + + self.retrieve = async_to_streamed_response_wrapper( + insolvency.retrieve, + ) 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/types/__init__.py b/src/openregister/types/__init__.py index ad39104..32769cb 100644 --- a/src/openregister/types/__init__.py +++ b/src/openregister/types/__init__.py @@ -17,24 +17,30 @@ 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 .credit_get_response import CreditGetResponse as CreditGetResponse from .merged_report_table import MergedReportTable as MergedReportTable from .representation_role import RepresentationRole as RepresentationRole from .company_register_type import CompanyRegisterType as CompanyRegisterType 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 .insolvency_retrieve_response import InsolvencyRetrieveResponse as InsolvencyRetrieveResponse from .search_find_person_v1_params import SearchFindPersonV1Params as SearchFindPersonV1Params from .company_get_details_v1_params import CompanyGetDetailsV1Params as CompanyGetDetailsV1Params 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 +52,9 @@ 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 .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_get_details_v1_response.py b/src/openregister/types/company_get_details_v1_response.py index afe7dd0..67cc96f 100644 --- a/src/openregister/types/company_get_details_v1_response.py +++ b/src/openregister/types/company_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 datetime from typing_extensions import Literal from pydantic import Field as FieldInfo @@ -14,22 +15,43 @@ 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", "Contact", "ContactSocialMedia", "Indicator", "IndustryCodes", "IndustryCodesWz2025", + "MergedInto", + "ProfitTransferAgreement", "Representation", "RepresentationLegalPerson", "RepresentationNaturalPerson", + "Insolvency", ] +class Acquisition(BaseModel): + company_id: str + """ + Unique company identifier of the company that was merged into this company. + Example: DE-HRB-F1103-267645 + """ + + date: str + """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" + + name: str + """Current name of the company that was merged into this company.""" + + class ContactSocialMedia(BaseModel): facebook: Optional[str] = None @@ -131,6 +153,46 @@ 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. + """ + + company_id: str + """ + Unique company identifier of the company this company was merged into. Example: + DE-HRB-F1103-267645 + """ + + date: str + """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" + + name: str + """Current name of the company this company was merged into.""" + + +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. + """ + + company_id: str + """ + Unique company identifier of the parent company receiving this company's profit + (Organträger). Example: DE-HRB-F1103-267645 + """ + + date: str + """Date the agreement was registered. Format: ISO 8601 (YYYY-MM-DD)""" + + name: str + """Current name of the parent company.""" + + class RepresentationLegalPerson(BaseModel): city: Optional[str] = None @@ -202,10 +264,47 @@ 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] = None + """Date the proceeding was closed.""" + + opened_at: Optional[datetime] = None + """Date the proceeding was opened.""" + + 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.""" @@ -242,6 +341,12 @@ 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.""" @@ -254,6 +359,14 @@ class CompanyGetDetailsV1Response(BaseModel): 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.""" @@ -301,5 +414,11 @@ class CompanyGetDetailsV1Response(BaseModel): 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_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/credit_get_response.py b/src/openregister/types/credit_get_response.py new file mode 100644 index 0000000..2bec860 --- /dev/null +++ b/src/openregister/types/credit_get_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__ = ["CreditGetResponse", "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 CreditGetResponse(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/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_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_retrieve_response.py b/src/openregister/types/insolvency_retrieve_response.py new file mode 100644 index 0000000..00767a1 --- /dev/null +++ b/src/openregister/types/insolvency_retrieve_response.py @@ -0,0 +1,183 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional +from datetime import 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__ = ["InsolvencyRetrieveResponse", "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: datetime + """Date the event was published by the court.""" + + 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[datetime] = None + """Date of the court decision, if published.""" + + effective_at: Optional[datetime] = None + """Date the decision takes effect, if published.""" + + +class InsolvencyRetrieveResponse(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[datetime] = None + """Deadline for creditors to file their claims.""" + + closed_at: Optional[datetime] = None + """Date the proceeding was closed.""" + + 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[datetime] = None + """Publication date of the first known event of the proceeding.""" + + last_event_at: Optional[datetime] = None + """Publication date of the most recent known event of the proceeding.""" + + opened_at: Optional[datetime] = None + """Date the proceeding was opened.""" + + proceeding_kind: Optional[InsolvencyProceedingKind] = None + """Kind of insolvency proceeding.""" 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/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..40fa645 --- /dev/null +++ b/src/openregister/types/search_find_insolvencies_v1_response.py @@ -0,0 +1,87 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import List, Optional + +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[str] = 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[str] = None + """Date of the most recent event in the proceeding. Format: ISO 8601 (YYYY-MM-DD)""" + + opened_at: Optional[str] = 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/tests/api_resources/test_credits.py b/tests/api_resources/test_credits.py new file mode 100644 index 0000000..a9c37ed --- /dev/null +++ b/tests/api_resources/test_credits.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 CreditGetResponse + +base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") + + +class TestCredits: + 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(self, client: Openregister) -> None: + credit = client.credits.get() + assert_matches_type(CreditGetResponse, credit, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_get(self, client: Openregister) -> None: + response = client.credits.with_raw_response.get() + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + credit = response.parse() + assert_matches_type(CreditGetResponse, credit, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_get(self, client: Openregister) -> None: + with client.credits.with_streaming_response.get() as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + credit = response.parse() + assert_matches_type(CreditGetResponse, credit, path=["response"]) + + assert cast(Any, response.is_closed) is True + + +class TestAsyncCredits: + 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(self, async_client: AsyncOpenregister) -> None: + credit = await async_client.credits.get() + assert_matches_type(CreditGetResponse, credit, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_get(self, async_client: AsyncOpenregister) -> None: + response = await async_client.credits.with_raw_response.get() + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + credit = await response.parse() + assert_matches_type(CreditGetResponse, credit, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_get(self, async_client: AsyncOpenregister) -> None: + async with async_client.credits.with_streaming_response.get() as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + credit = await response.parse() + assert_matches_type(CreditGetResponse, credit, path=["response"]) + + assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/test_insolvency.py b/tests/api_resources/test_insolvency.py new file mode 100644 index 0000000..e98534a --- /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 InsolvencyRetrieveResponse + +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_retrieve(self, client: Openregister) -> None: + insolvency = client.insolvency.retrieve( + "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", + ) + assert_matches_type(InsolvencyRetrieveResponse, insolvency, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_raw_response_retrieve(self, client: Openregister) -> None: + response = client.insolvency.with_raw_response.retrieve( + "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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_streaming_response_retrieve(self, client: Openregister) -> None: + with client.insolvency.with_streaming_response.retrieve( + "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(InsolvencyRetrieveResponse, 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_retrieve(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.retrieve( + "", + ) + + +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_retrieve(self, async_client: AsyncOpenregister) -> None: + insolvency = await async_client.insolvency.retrieve( + "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", + ) + assert_matches_type(InsolvencyRetrieveResponse, insolvency, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_raw_response_retrieve(self, async_client: AsyncOpenregister) -> None: + response = await async_client.insolvency.with_raw_response.retrieve( + "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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_streaming_response_retrieve(self, async_client: AsyncOpenregister) -> None: + async with async_client.insolvency.with_streaming_response.retrieve( + "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(InsolvencyRetrieveResponse, 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_retrieve(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.retrieve( + "", + ) 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: From 8c84e9b508b6843e072928314984b501d509db97 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 11:37:53 +0000 Subject: [PATCH 2/9] feat(api): manual updates --- .stats.yml | 4 ++-- src/openregister/types/person_get_details_v1_response.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.stats.yml b/.stats.yml index 1ad2fcf..ad67b1e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-669a60a454bad37db20929372fb806f9c8cfd5077956f19b668cea5f95881444.yml -openapi_spec_hash: 4484feafcfabb1d3b895168efe9453d2 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-0ba212857fc3980bbd4d3ed5f9ce9fa585864331b9f45e5db764c22b39337b8b.yml +openapi_spec_hash: 70928563fc91d6d8314c80c00dca2a48 config_hash: d97e8b486db485cf210154fbca47249d 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" """ From 382bb4c7cb9ea8e573f8ab5144601af766606c29 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 11:42:45 +0000 Subject: [PATCH 3/9] feat(api): manual updates --- .stats.yml | 4 +- api.md | 10 +-- src/openregister/_client.py | 40 +++++----- src/openregister/resources/__init__.py | 28 +++---- src/openregister/resources/insolvency.py | 30 ++++---- .../resources/{credits.py => usage.py} | 76 +++++++++---------- src/openregister/types/__init__.py | 4 +- ... => insolvency_get_details_v1_response.py} | 4 +- ...onse.py => usage_get_usage_v1_response.py} | 4 +- tests/api_resources/test_insolvency.py | 46 +++++------ .../{test_credits.py => test_usage.py} | 50 ++++++------ 11 files changed, 148 insertions(+), 148 deletions(-) rename src/openregister/resources/{credits.py => usage.py} (63%) rename src/openregister/types/{insolvency_retrieve_response.py => insolvency_get_details_v1_response.py} (97%) rename src/openregister/types/{credit_get_response.py => usage_get_usage_v1_response.py} (88%) rename tests/api_resources/{test_credits.py => test_usage.py} (51%) diff --git a/.stats.yml b/.stats.yml index ad67b1e..89b4cea 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-0ba212857fc3980bbd4d3ed5f9ce9fa585864331b9f45e5db764c22b39337b8b.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-f74a53a3eef0f001a108deaa20aaafc035a251b9f9398307dccd1f3a60c3e54d.yml openapi_spec_hash: 70928563fc91d6d8314c80c00dca2a48 -config_hash: d97e8b486db485cf210154fbca47249d +config_hash: a7d4ce207822b6c1310a86a7b4bcf13e diff --git a/api.md b/api.md index 30612b2..4f2f6e9 100644 --- a/api.md +++ b/api.md @@ -139,17 +139,17 @@ Methods: - client.transparenzregister.extract.create_v1(\*\*params) -> ExtractCreateV1Response - client.transparenzregister.extract.get_v1(extract_id) -> TransparenzregisterExtract -# Credits +# Usage Types: ```python -from openregister.types import CreditGetResponse +from openregister.types import UsageGetUsageV1Response ``` Methods: -- client.credits.get() -> CreditGetResponse +- client.usage.get_usage_v1() -> UsageGetUsageV1Response # Insolvency @@ -161,10 +161,10 @@ from openregister.types import ( InsolvencyDebtorKind, InsolvencyProceedingKind, InsolvencyStatus, - InsolvencyRetrieveResponse, + InsolvencyGetDetailsV1Response, ) ``` Methods: -- client.insolvency.retrieve(insolvency_id) -> InsolvencyRetrieveResponse +- client.insolvency.get_details_v1(insolvency_id) -> InsolvencyGetDetailsV1Response diff --git a/src/openregister/_client.py b/src/openregister/_client.py index d28dc2c..e63b906 100644 --- a/src/openregister/_client.py +++ b/src/openregister/_client.py @@ -35,11 +35,11 @@ ) if TYPE_CHECKING: - from .resources import person, search, company, credits, monitor, document, insolvency, 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.credits import CreditsResource, AsyncCreditsResource from .resources.monitor import MonitorResource, AsyncMonitorResource from .resources.document import DocumentResource, AsyncDocumentResource from .resources.insolvency import InsolvencyResource, AsyncInsolvencyResource @@ -161,10 +161,10 @@ def transparenzregister(self) -> TransparenzregisterResource: return TransparenzregisterResource(self) @cached_property - def credits(self) -> CreditsResource: - from .resources.credits import CreditsResource + def usage(self) -> UsageResource: + from .resources.usage import UsageResource - return CreditsResource(self) + return UsageResource(self) @cached_property def insolvency(self) -> InsolvencyResource: @@ -386,10 +386,10 @@ def transparenzregister(self) -> AsyncTransparenzregisterResource: return AsyncTransparenzregisterResource(self) @cached_property - def credits(self) -> AsyncCreditsResource: - from .resources.credits import AsyncCreditsResource + def usage(self) -> AsyncUsageResource: + from .resources.usage import AsyncUsageResource - return AsyncCreditsResource(self) + return AsyncUsageResource(self) @cached_property def insolvency(self) -> AsyncInsolvencyResource: @@ -553,10 +553,10 @@ def transparenzregister(self) -> transparenzregister.TransparenzregisterResource return TransparenzregisterResourceWithRawResponse(self._client.transparenzregister) @cached_property - def credits(self) -> credits.CreditsResourceWithRawResponse: - from .resources.credits import CreditsResourceWithRawResponse + def usage(self) -> usage.UsageResourceWithRawResponse: + from .resources.usage import UsageResourceWithRawResponse - return CreditsResourceWithRawResponse(self._client.credits) + return UsageResourceWithRawResponse(self._client.usage) @cached_property def insolvency(self) -> insolvency.InsolvencyResourceWithRawResponse: @@ -608,10 +608,10 @@ def transparenzregister(self) -> transparenzregister.AsyncTransparenzregisterRes return AsyncTransparenzregisterResourceWithRawResponse(self._client.transparenzregister) @cached_property - def credits(self) -> credits.AsyncCreditsResourceWithRawResponse: - from .resources.credits import AsyncCreditsResourceWithRawResponse + def usage(self) -> usage.AsyncUsageResourceWithRawResponse: + from .resources.usage import AsyncUsageResourceWithRawResponse - return AsyncCreditsResourceWithRawResponse(self._client.credits) + return AsyncUsageResourceWithRawResponse(self._client.usage) @cached_property def insolvency(self) -> insolvency.AsyncInsolvencyResourceWithRawResponse: @@ -663,10 +663,10 @@ def transparenzregister(self) -> transparenzregister.TransparenzregisterResource return TransparenzregisterResourceWithStreamingResponse(self._client.transparenzregister) @cached_property - def credits(self) -> credits.CreditsResourceWithStreamingResponse: - from .resources.credits import CreditsResourceWithStreamingResponse + def usage(self) -> usage.UsageResourceWithStreamingResponse: + from .resources.usage import UsageResourceWithStreamingResponse - return CreditsResourceWithStreamingResponse(self._client.credits) + return UsageResourceWithStreamingResponse(self._client.usage) @cached_property def insolvency(self) -> insolvency.InsolvencyResourceWithStreamingResponse: @@ -718,10 +718,10 @@ def transparenzregister(self) -> transparenzregister.AsyncTransparenzregisterRes return AsyncTransparenzregisterResourceWithStreamingResponse(self._client.transparenzregister) @cached_property - def credits(self) -> credits.AsyncCreditsResourceWithStreamingResponse: - from .resources.credits import AsyncCreditsResourceWithStreamingResponse + def usage(self) -> usage.AsyncUsageResourceWithStreamingResponse: + from .resources.usage import AsyncUsageResourceWithStreamingResponse - return AsyncCreditsResourceWithStreamingResponse(self._client.credits) + return AsyncUsageResourceWithStreamingResponse(self._client.usage) @cached_property def insolvency(self) -> insolvency.AsyncInsolvencyResourceWithStreamingResponse: diff --git a/src/openregister/resources/__init__.py b/src/openregister/resources/__init__.py index e4cbcc6..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, @@ -24,14 +32,6 @@ CompanyResourceWithStreamingResponse, AsyncCompanyResourceWithStreamingResponse, ) -from .credits import ( - CreditsResource, - AsyncCreditsResource, - CreditsResourceWithRawResponse, - AsyncCreditsResourceWithRawResponse, - CreditsResourceWithStreamingResponse, - AsyncCreditsResourceWithStreamingResponse, -) from .monitor import ( MonitorResource, AsyncMonitorResource, @@ -102,12 +102,12 @@ "AsyncTransparenzregisterResourceWithRawResponse", "TransparenzregisterResourceWithStreamingResponse", "AsyncTransparenzregisterResourceWithStreamingResponse", - "CreditsResource", - "AsyncCreditsResource", - "CreditsResourceWithRawResponse", - "AsyncCreditsResourceWithRawResponse", - "CreditsResourceWithStreamingResponse", - "AsyncCreditsResourceWithStreamingResponse", + "UsageResource", + "AsyncUsageResource", + "UsageResourceWithRawResponse", + "AsyncUsageResourceWithRawResponse", + "UsageResourceWithStreamingResponse", + "AsyncUsageResourceWithStreamingResponse", "InsolvencyResource", "AsyncInsolvencyResource", "InsolvencyResourceWithRawResponse", diff --git a/src/openregister/resources/insolvency.py b/src/openregister/resources/insolvency.py index 0436eed..b81e1d5 100644 --- a/src/openregister/resources/insolvency.py +++ b/src/openregister/resources/insolvency.py @@ -15,7 +15,7 @@ async_to_streamed_response_wrapper, ) from .._base_client import make_request_options -from ..types.insolvency_retrieve_response import InsolvencyRetrieveResponse +from ..types.insolvency_get_details_v1_response import InsolvencyGetDetailsV1Response __all__ = ["InsolvencyResource", "AsyncInsolvencyResource"] @@ -40,7 +40,7 @@ def with_streaming_response(self) -> InsolvencyResourceWithStreamingResponse: """ return InsolvencyResourceWithStreamingResponse(self) - def retrieve( + def get_details_v1( self, insolvency_id: str, *, @@ -50,7 +50,7 @@ def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> InsolvencyRetrieveResponse: + ) -> InsolvencyGetDetailsV1Response: """ Get detailed insolvency proceeding information @@ -70,7 +70,7 @@ def retrieve( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=InsolvencyRetrieveResponse, + cast_to=InsolvencyGetDetailsV1Response, ) @@ -94,7 +94,7 @@ def with_streaming_response(self) -> AsyncInsolvencyResourceWithStreamingRespons """ return AsyncInsolvencyResourceWithStreamingResponse(self) - async def retrieve( + async def get_details_v1( self, insolvency_id: str, *, @@ -104,7 +104,7 @@ async def retrieve( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> InsolvencyRetrieveResponse: + ) -> InsolvencyGetDetailsV1Response: """ Get detailed insolvency proceeding information @@ -124,7 +124,7 @@ async def retrieve( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=InsolvencyRetrieveResponse, + cast_to=InsolvencyGetDetailsV1Response, ) @@ -132,8 +132,8 @@ class InsolvencyResourceWithRawResponse: def __init__(self, insolvency: InsolvencyResource) -> None: self._insolvency = insolvency - self.retrieve = to_raw_response_wrapper( - insolvency.retrieve, + self.get_details_v1 = to_raw_response_wrapper( + insolvency.get_details_v1, ) @@ -141,8 +141,8 @@ class AsyncInsolvencyResourceWithRawResponse: def __init__(self, insolvency: AsyncInsolvencyResource) -> None: self._insolvency = insolvency - self.retrieve = async_to_raw_response_wrapper( - insolvency.retrieve, + self.get_details_v1 = async_to_raw_response_wrapper( + insolvency.get_details_v1, ) @@ -150,8 +150,8 @@ class InsolvencyResourceWithStreamingResponse: def __init__(self, insolvency: InsolvencyResource) -> None: self._insolvency = insolvency - self.retrieve = to_streamed_response_wrapper( - insolvency.retrieve, + self.get_details_v1 = to_streamed_response_wrapper( + insolvency.get_details_v1, ) @@ -159,6 +159,6 @@ class AsyncInsolvencyResourceWithStreamingResponse: def __init__(self, insolvency: AsyncInsolvencyResource) -> None: self._insolvency = insolvency - self.retrieve = async_to_streamed_response_wrapper( - insolvency.retrieve, + self.get_details_v1 = async_to_streamed_response_wrapper( + insolvency.get_details_v1, ) diff --git a/src/openregister/resources/credits.py b/src/openregister/resources/usage.py similarity index 63% rename from src/openregister/resources/credits.py rename to src/openregister/resources/usage.py index 5943c80..d16f24b 100644 --- a/src/openregister/resources/credits.py +++ b/src/openregister/resources/usage.py @@ -14,32 +14,32 @@ async_to_streamed_response_wrapper, ) from .._base_client import make_request_options -from ..types.credit_get_response import CreditGetResponse +from ..types.usage_get_usage_v1_response import UsageGetUsageV1Response -__all__ = ["CreditsResource", "AsyncCreditsResource"] +__all__ = ["UsageResource", "AsyncUsageResource"] -class CreditsResource(SyncAPIResource): +class UsageResource(SyncAPIResource): @cached_property - def with_raw_response(self) -> CreditsResourceWithRawResponse: + 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 CreditsResourceWithRawResponse(self) + return UsageResourceWithRawResponse(self) @cached_property - def with_streaming_response(self) -> CreditsResourceWithStreamingResponse: + 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 CreditsResourceWithStreamingResponse(self) + return UsageResourceWithStreamingResponse(self) - def get( + def get_usage_v1( self, *, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -48,38 +48,38 @@ def get( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> CreditGetResponse: + ) -> UsageGetUsageV1Response: """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=CreditGetResponse, + cast_to=UsageGetUsageV1Response, ) -class AsyncCreditsResource(AsyncAPIResource): +class AsyncUsageResource(AsyncAPIResource): @cached_property - def with_raw_response(self) -> AsyncCreditsResourceWithRawResponse: + 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 AsyncCreditsResourceWithRawResponse(self) + return AsyncUsageResourceWithRawResponse(self) @cached_property - def with_streaming_response(self) -> AsyncCreditsResourceWithStreamingResponse: + 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 AsyncCreditsResourceWithStreamingResponse(self) + return AsyncUsageResourceWithStreamingResponse(self) - async def get( + async def get_usage_v1( self, *, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -88,48 +88,48 @@ async def get( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> CreditGetResponse: + ) -> UsageGetUsageV1Response: """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=CreditGetResponse, + cast_to=UsageGetUsageV1Response, ) -class CreditsResourceWithRawResponse: - def __init__(self, credits: CreditsResource) -> None: - self._credits = credits +class UsageResourceWithRawResponse: + def __init__(self, usage: UsageResource) -> None: + self._usage = usage - self.get = to_raw_response_wrapper( - credits.get, + self.get_usage_v1 = to_raw_response_wrapper( + usage.get_usage_v1, ) -class AsyncCreditsResourceWithRawResponse: - def __init__(self, credits: AsyncCreditsResource) -> None: - self._credits = credits +class AsyncUsageResourceWithRawResponse: + def __init__(self, usage: AsyncUsageResource) -> None: + self._usage = usage - self.get = async_to_raw_response_wrapper( - credits.get, + self.get_usage_v1 = async_to_raw_response_wrapper( + usage.get_usage_v1, ) -class CreditsResourceWithStreamingResponse: - def __init__(self, credits: CreditsResource) -> None: - self._credits = credits +class UsageResourceWithStreamingResponse: + def __init__(self, usage: UsageResource) -> None: + self._usage = usage - self.get = to_streamed_response_wrapper( - credits.get, + self.get_usage_v1 = to_streamed_response_wrapper( + usage.get_usage_v1, ) -class AsyncCreditsResourceWithStreamingResponse: - def __init__(self, credits: AsyncCreditsResource) -> None: - self._credits = credits +class AsyncUsageResourceWithStreamingResponse: + def __init__(self, usage: AsyncUsageResource) -> None: + self._usage = usage - self.get = async_to_streamed_response_wrapper( - credits.get, + self.get_usage_v1 = async_to_streamed_response_wrapper( + usage.get_usage_v1, ) diff --git a/src/openregister/types/__init__.py b/src/openregister/types/__init__.py index 32769cb..4ca05ef 100644 --- a/src/openregister/types/__init__.py +++ b/src/openregister/types/__init__.py @@ -20,7 +20,6 @@ from .insolvency_status import InsolvencyStatus as InsolvencyStatus from .merged_report_row import MergedReportRow as MergedReportRow from .company_legal_form import CompanyLegalForm as CompanyLegalForm -from .credit_get_response import CreditGetResponse as CreditGetResponse from .merged_report_table import MergedReportTable as MergedReportTable from .representation_role import RepresentationRole as RepresentationRole from .company_register_type import CompanyRegisterType as CompanyRegisterType @@ -32,11 +31,11 @@ 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 .usage_get_usage_v1_response import UsageGetUsageV1Response as UsageGetUsageV1Response 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 .insolvency_retrieve_response import InsolvencyRetrieveResponse as InsolvencyRetrieveResponse from .search_find_person_v1_params import SearchFindPersonV1Params as SearchFindPersonV1Params from .company_get_details_v1_params import CompanyGetDetailsV1Params as CompanyGetDetailsV1Params from .company_get_owners_v1_response import CompanyGetOwnersV1Response as CompanyGetOwnersV1Response @@ -52,6 +51,7 @@ 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 diff --git a/src/openregister/types/insolvency_retrieve_response.py b/src/openregister/types/insolvency_get_details_v1_response.py similarity index 97% rename from src/openregister/types/insolvency_retrieve_response.py rename to src/openregister/types/insolvency_get_details_v1_response.py index 00767a1..22a8494 100644 --- a/src/openregister/types/insolvency_retrieve_response.py +++ b/src/openregister/types/insolvency_get_details_v1_response.py @@ -10,7 +10,7 @@ from .insolvency_proceeding_kind import InsolvencyProceedingKind from .insolvency_administration_kind import InsolvencyAdministrationKind -__all__ = ["InsolvencyRetrieveResponse", "Event", "EventDetails", "EventDetailsMeeting"] +__all__ = ["InsolvencyGetDetailsV1Response", "Event", "EventDetails", "EventDetailsMeeting"] class EventDetailsMeeting(BaseModel): @@ -109,7 +109,7 @@ class Event(BaseModel): """Date the decision takes effect, if published.""" -class InsolvencyRetrieveResponse(BaseModel): +class InsolvencyGetDetailsV1Response(BaseModel): """An insolvency proceeding with all of its published events.""" id: str diff --git a/src/openregister/types/credit_get_response.py b/src/openregister/types/usage_get_usage_v1_response.py similarity index 88% rename from src/openregister/types/credit_get_response.py rename to src/openregister/types/usage_get_usage_v1_response.py index 2bec860..2e620a1 100644 --- a/src/openregister/types/credit_get_response.py +++ b/src/openregister/types/usage_get_usage_v1_response.py @@ -5,7 +5,7 @@ from .._models import BaseModel -__all__ = ["CreditGetResponse", "Period"] +__all__ = ["UsageGetUsageV1Response", "Period"] class Period(BaseModel): @@ -18,7 +18,7 @@ class Period(BaseModel): """ -class CreditGetResponse(BaseModel): +class UsageGetUsageV1Response(BaseModel): included_credits: int overage_credits: int diff --git a/tests/api_resources/test_insolvency.py b/tests/api_resources/test_insolvency.py index e98534a..041cafb 100644 --- a/tests/api_resources/test_insolvency.py +++ b/tests/api_resources/test_insolvency.py @@ -9,7 +9,7 @@ from tests.utils import assert_matches_type from openregister import Openregister, AsyncOpenregister -from openregister.types import InsolvencyRetrieveResponse +from openregister.types import InsolvencyGetDetailsV1Response base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -19,43 +19,43 @@ class TestInsolvency: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_method_retrieve(self, client: Openregister) -> None: - insolvency = client.insolvency.retrieve( + def test_method_get_details_v1(self, client: Openregister) -> None: + insolvency = client.insolvency.get_details_v1( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", ) - assert_matches_type(InsolvencyRetrieveResponse, insolvency, path=["response"]) + assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_raw_response_retrieve(self, client: Openregister) -> None: - response = client.insolvency.with_raw_response.retrieve( + 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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_streaming_response_retrieve(self, client: Openregister) -> None: - with client.insolvency.with_streaming_response.retrieve( + 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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + 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_retrieve(self, client: Openregister) -> None: + 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.retrieve( + client.insolvency.with_raw_response.get_details_v1( "", ) @@ -67,42 +67,42 @@ class TestAsyncInsolvency: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_method_retrieve(self, async_client: AsyncOpenregister) -> None: - insolvency = await async_client.insolvency.retrieve( + 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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncOpenregister) -> None: - response = await async_client.insolvency.with_raw_response.retrieve( + 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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + assert_matches_type(InsolvencyGetDetailsV1Response, insolvency, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncOpenregister) -> None: - async with async_client.insolvency.with_streaming_response.retrieve( + 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(InsolvencyRetrieveResponse, insolvency, path=["response"]) + 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_retrieve(self, async_client: AsyncOpenregister) -> None: + 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.retrieve( + await async_client.insolvency.with_raw_response.get_details_v1( "", ) diff --git a/tests/api_resources/test_credits.py b/tests/api_resources/test_usage.py similarity index 51% rename from tests/api_resources/test_credits.py rename to tests/api_resources/test_usage.py index a9c37ed..3748fbd 100644 --- a/tests/api_resources/test_credits.py +++ b/tests/api_resources/test_usage.py @@ -9,72 +9,72 @@ from tests.utils import assert_matches_type from openregister import Openregister, AsyncOpenregister -from openregister.types import CreditGetResponse +from openregister.types import UsageGetUsageV1Response base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") -class TestCredits: +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(self, client: Openregister) -> None: - credit = client.credits.get() - assert_matches_type(CreditGetResponse, credit, path=["response"]) + def test_method_get_usage_v1(self, client: Openregister) -> None: + usage = client.usage.get_usage_v1() + assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_raw_response_get(self, client: Openregister) -> None: - response = client.credits.with_raw_response.get() + def test_raw_response_get_usage_v1(self, client: Openregister) -> None: + response = client.usage.with_raw_response.get_usage_v1() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" - credit = response.parse() - assert_matches_type(CreditGetResponse, credit, path=["response"]) + usage = response.parse() + assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_streaming_response_get(self, client: Openregister) -> None: - with client.credits.with_streaming_response.get() as response: + def test_streaming_response_get_usage_v1(self, client: Openregister) -> None: + with client.usage.with_streaming_response.get_usage_v1() as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" - credit = response.parse() - assert_matches_type(CreditGetResponse, credit, path=["response"]) + usage = response.parse() + assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) assert cast(Any, response.is_closed) is True -class TestAsyncCredits: +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(self, async_client: AsyncOpenregister) -> None: - credit = await async_client.credits.get() - assert_matches_type(CreditGetResponse, credit, path=["response"]) + async def test_method_get_usage_v1(self, async_client: AsyncOpenregister) -> None: + usage = await async_client.usage.get_usage_v1() + assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_raw_response_get(self, async_client: AsyncOpenregister) -> None: - response = await async_client.credits.with_raw_response.get() + async def test_raw_response_get_usage_v1(self, async_client: AsyncOpenregister) -> None: + response = await async_client.usage.with_raw_response.get_usage_v1() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" - credit = await response.parse() - assert_matches_type(CreditGetResponse, credit, path=["response"]) + usage = await response.parse() + assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_streaming_response_get(self, async_client: AsyncOpenregister) -> None: - async with async_client.credits.with_streaming_response.get() as response: + async def test_streaming_response_get_usage_v1(self, async_client: AsyncOpenregister) -> None: + async with async_client.usage.with_streaming_response.get_usage_v1() as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" - credit = await response.parse() - assert_matches_type(CreditGetResponse, credit, path=["response"]) + usage = await response.parse() + assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) assert cast(Any, response.is_closed) is True From ae6a8451a0ab874eee7f2471b0f0005f110b49fa Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 11:43:45 +0000 Subject: [PATCH 4/9] feat(api): manual updates --- .stats.yml | 4 +- api.md | 4 +- src/openregister/resources/usage.py | 30 +++++++-------- src/openregister/types/__init__.py | 2 +- ...se.py => usage_get_credits_v1_response.py} | 4 +- tests/api_resources/test_usage.py | 38 +++++++++---------- 6 files changed, 41 insertions(+), 41 deletions(-) rename src/openregister/types/{usage_get_usage_v1_response.py => usage_get_credits_v1_response.py} (87%) diff --git a/.stats.yml b/.stats.yml index 89b4cea..92d09d4 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-f74a53a3eef0f001a108deaa20aaafc035a251b9f9398307dccd1f3a60c3e54d.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-b552a641ebf156d508479292fa06bc9b12d90f098d06322618a36ddf0c6b8db4.yml openapi_spec_hash: 70928563fc91d6d8314c80c00dca2a48 -config_hash: a7d4ce207822b6c1310a86a7b4bcf13e +config_hash: 42520b3d15dbe4a67577eb9c86e4ed01 diff --git a/api.md b/api.md index 4f2f6e9..23f317b 100644 --- a/api.md +++ b/api.md @@ -144,12 +144,12 @@ Methods: Types: ```python -from openregister.types import UsageGetUsageV1Response +from openregister.types import UsageGetCreditsV1Response ``` Methods: -- client.usage.get_usage_v1() -> UsageGetUsageV1Response +- client.usage.get_credits_v1() -> UsageGetCreditsV1Response # Insolvency diff --git a/src/openregister/resources/usage.py b/src/openregister/resources/usage.py index d16f24b..d2fe585 100644 --- a/src/openregister/resources/usage.py +++ b/src/openregister/resources/usage.py @@ -14,7 +14,7 @@ async_to_streamed_response_wrapper, ) from .._base_client import make_request_options -from ..types.usage_get_usage_v1_response import UsageGetUsageV1Response +from ..types.usage_get_credits_v1_response import UsageGetCreditsV1Response __all__ = ["UsageResource", "AsyncUsageResource"] @@ -39,7 +39,7 @@ def with_streaming_response(self) -> UsageResourceWithStreamingResponse: """ return UsageResourceWithStreamingResponse(self) - def get_usage_v1( + 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. @@ -48,14 +48,14 @@ def get_usage_v1( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> UsageGetUsageV1Response: + ) -> 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=UsageGetUsageV1Response, + cast_to=UsageGetCreditsV1Response, ) @@ -79,7 +79,7 @@ def with_streaming_response(self) -> AsyncUsageResourceWithStreamingResponse: """ return AsyncUsageResourceWithStreamingResponse(self) - async def get_usage_v1( + 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. @@ -88,14 +88,14 @@ async def get_usage_v1( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> UsageGetUsageV1Response: + ) -> 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=UsageGetUsageV1Response, + cast_to=UsageGetCreditsV1Response, ) @@ -103,8 +103,8 @@ class UsageResourceWithRawResponse: def __init__(self, usage: UsageResource) -> None: self._usage = usage - self.get_usage_v1 = to_raw_response_wrapper( - usage.get_usage_v1, + self.get_credits_v1 = to_raw_response_wrapper( + usage.get_credits_v1, ) @@ -112,8 +112,8 @@ class AsyncUsageResourceWithRawResponse: def __init__(self, usage: AsyncUsageResource) -> None: self._usage = usage - self.get_usage_v1 = async_to_raw_response_wrapper( - usage.get_usage_v1, + self.get_credits_v1 = async_to_raw_response_wrapper( + usage.get_credits_v1, ) @@ -121,8 +121,8 @@ class UsageResourceWithStreamingResponse: def __init__(self, usage: UsageResource) -> None: self._usage = usage - self.get_usage_v1 = to_streamed_response_wrapper( - usage.get_usage_v1, + self.get_credits_v1 = to_streamed_response_wrapper( + usage.get_credits_v1, ) @@ -130,6 +130,6 @@ class AsyncUsageResourceWithStreamingResponse: def __init__(self, usage: AsyncUsageResource) -> None: self._usage = usage - self.get_usage_v1 = async_to_streamed_response_wrapper( - usage.get_usage_v1, + 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 4ca05ef..ca9db5c 100644 --- a/src/openregister/types/__init__.py +++ b/src/openregister/types/__init__.py @@ -31,13 +31,13 @@ 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 .usage_get_usage_v1_response import UsageGetUsageV1Response as UsageGetUsageV1Response 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 diff --git a/src/openregister/types/usage_get_usage_v1_response.py b/src/openregister/types/usage_get_credits_v1_response.py similarity index 87% rename from src/openregister/types/usage_get_usage_v1_response.py rename to src/openregister/types/usage_get_credits_v1_response.py index 2e620a1..0900d7f 100644 --- a/src/openregister/types/usage_get_usage_v1_response.py +++ b/src/openregister/types/usage_get_credits_v1_response.py @@ -5,7 +5,7 @@ from .._models import BaseModel -__all__ = ["UsageGetUsageV1Response", "Period"] +__all__ = ["UsageGetCreditsV1Response", "Period"] class Period(BaseModel): @@ -18,7 +18,7 @@ class Period(BaseModel): """ -class UsageGetUsageV1Response(BaseModel): +class UsageGetCreditsV1Response(BaseModel): included_credits: int overage_credits: int diff --git a/tests/api_resources/test_usage.py b/tests/api_resources/test_usage.py index 3748fbd..fddeeb8 100644 --- a/tests/api_resources/test_usage.py +++ b/tests/api_resources/test_usage.py @@ -9,7 +9,7 @@ from tests.utils import assert_matches_type from openregister import Openregister, AsyncOpenregister -from openregister.types import UsageGetUsageV1Response +from openregister.types import UsageGetCreditsV1Response base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -19,29 +19,29 @@ class TestUsage: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_method_get_usage_v1(self, client: Openregister) -> None: - usage = client.usage.get_usage_v1() - assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) + 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_usage_v1(self, client: Openregister) -> None: - response = client.usage.with_raw_response.get_usage_v1() + 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(UsageGetUsageV1Response, usage, path=["response"]) + assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - def test_streaming_response_get_usage_v1(self, client: Openregister) -> None: - with client.usage.with_streaming_response.get_usage_v1() as response: + 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(UsageGetUsageV1Response, usage, path=["response"]) + assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"]) assert cast(Any, response.is_closed) is True @@ -53,28 +53,28 @@ class TestAsyncUsage: @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_method_get_usage_v1(self, async_client: AsyncOpenregister) -> None: - usage = await async_client.usage.get_usage_v1() - assert_matches_type(UsageGetUsageV1Response, usage, path=["response"]) + 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_usage_v1(self, async_client: AsyncOpenregister) -> None: - response = await async_client.usage.with_raw_response.get_usage_v1() + 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(UsageGetUsageV1Response, usage, path=["response"]) + assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"]) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize - async def test_streaming_response_get_usage_v1(self, async_client: AsyncOpenregister) -> None: - async with async_client.usage.with_streaming_response.get_usage_v1() as response: + 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(UsageGetUsageV1Response, usage, path=["response"]) + assert_matches_type(UsageGetCreditsV1Response, usage, path=["response"]) assert cast(Any, response.is_closed) is True From 4b1db502260b9cf0465151e84dee5de68a5d4dcc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2026 02:17:41 +0000 Subject: [PATCH 5/9] feat(stlc): configurable CI runner and private-production-repo support in workflow templates --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From a293e6105c974b39c4cde0ea33d581d6728c9c04 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 12:01:31 +0000 Subject: [PATCH 6/9] feat(api): manual updates --- .stats.yml | 4 +- .../types/company_get_details_v1_response.py | 70 ++++++++++++++++--- .../company_get_financials_v1_response.py | 5 +- .../types/search_find_companies_v1_params.py | 4 ++ 4 files changed, 70 insertions(+), 13 deletions(-) diff --git a/.stats.yml b/.stats.yml index 92d09d4..75131de 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-b552a641ebf156d508479292fa06bc9b12d90f098d06322618a36ddf0c6b8db4.yml -openapi_spec_hash: 70928563fc91d6d8314c80c00dca2a48 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-b774542cfa912528f8fb43cd12b71c8d68ff83755923ba3aad98ca48d083e6cf.yml +openapi_spec_hash: 5aa3b9b59cb4ed94ed80f2e94b9b9a20 config_hash: 42520b3d15dbe4a67577eb9c86e4ed01 diff --git a/src/openregister/types/company_get_details_v1_response.py b/src/openregister/types/company_get_details_v1_response.py index 67cc96f..53da751 100644 --- a/src/openregister/types/company_get_details_v1_response.py +++ b/src/openregister/types/company_get_details_v1_response.py @@ -24,6 +24,7 @@ __all__ = [ "CompanyGetDetailsV1Response", "Acquisition", + "AssetSpinOff", "Contact", "ContactSocialMedia", "Indicator", @@ -39,17 +40,47 @@ class Acquisition(BaseModel): + agreement_date: Optional[str] = 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 """ - date: str + name: str + """Current name of the company that was merged into this company.""" + + registration_date: str """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" + +class AssetSpinOff(BaseModel): + agreement_date: Optional[str] = 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 was merged into this company.""" + """Current name of the company that received the assets.""" + + registration_date: str + """Date the spin-off was registered. Format: ISO 8601 (YYYY-MM-DD)""" class ContactSocialMedia(BaseModel): @@ -159,18 +190,26 @@ class MergedInto(BaseModel): the company it was merged into. """ + agreement_date: Optional[str] = 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 """ - date: str - """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" - name: str """Current name of the company this company was merged into.""" + registration_date: str + """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" + class ProfitTransferAgreement(BaseModel): """ @@ -180,18 +219,26 @@ class ProfitTransferAgreement(BaseModel): Null if the company has no active agreement. """ + agreement_date: Optional[str] = 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 """ - date: str - """Date the agreement was registered. Format: ISO 8601 (YYYY-MM-DD)""" - name: str """Current name of the parent company.""" + registration_date: str + """Date the agreement was registered. Format: ISO 8601 (YYYY-MM-DD)""" + class RepresentationLegalPerson(BaseModel): city: Optional[str] = None @@ -311,6 +358,13 @@ class CompanyGetDetailsV1Response(BaseModel): 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.""" diff --git a/src/openregister/types/company_get_financials_v1_response.py b/src/openregister/types/company_get_financials_v1_response.py index 1dfb7e8..4977395 100644 --- a/src/openregister/types/company_get_financials_v1_response.py +++ b/src/openregister/types/company_get_financials_v1_response.py @@ -3,7 +3,6 @@ from __future__ import annotations from typing import List, Optional -from datetime import date from .._models import BaseModel @@ -207,7 +206,7 @@ class Report(BaseModel): passiva: "ReportTable" - report_end_date: date + report_end_date: str report_id: str """ @@ -215,7 +214,7 @@ class Report(BaseModel): f47ac10b-58cc-4372-a567-0e02b2c3d479 """ - report_start_date: Optional[date] = None + report_start_date: Optional[str] = None sources: List[ReportSource] """Sources of the report data. Presigned URLs accessible for 30 minutes.""" 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", ] ] From 53703adf0fd16faba01abb4277e4133108f602ea Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 12:04:41 +0000 Subject: [PATCH 7/9] feat(api): manual updates --- .stats.yml | 4 ++-- src/openregister/types/company_get_financials_v1_response.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 75131de..62710a1 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-b774542cfa912528f8fb43cd12b71c8d68ff83755923ba3aad98ca48d083e6cf.yml -openapi_spec_hash: 5aa3b9b59cb4ed94ed80f2e94b9b9a20 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-e5a2c71547443dfedb4cc1afc868bae2d5e54a3dfbf29aa496f7413181deaeb6.yml +openapi_spec_hash: 901154ddde15a51084806fa98ca79f2c config_hash: 42520b3d15dbe4a67577eb9c86e4ed01 diff --git a/src/openregister/types/company_get_financials_v1_response.py b/src/openregister/types/company_get_financials_v1_response.py index 4977395..1dfb7e8 100644 --- a/src/openregister/types/company_get_financials_v1_response.py +++ b/src/openregister/types/company_get_financials_v1_response.py @@ -3,6 +3,7 @@ from __future__ import annotations from typing import List, Optional +from datetime import date from .._models import BaseModel @@ -206,7 +207,7 @@ class Report(BaseModel): passiva: "ReportTable" - report_end_date: str + report_end_date: date report_id: str """ @@ -214,7 +215,7 @@ class Report(BaseModel): f47ac10b-58cc-4372-a567-0e02b2c3d479 """ - report_start_date: Optional[str] = None + report_start_date: Optional[date] = None sources: List[ReportSource] """Sources of the report data. Presigned URLs accessible for 30 minutes.""" From bf84084c7a3f1d6d435370e508c89bfea83a5e16 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 13:56:14 +0000 Subject: [PATCH 8/9] feat(api): typed dates --- .stats.yml | 4 +- src/openregister/types/company_address.py | 3 +- src/openregister/types/company_capital.py | 3 +- src/openregister/types/company_document.py | 3 +- .../types/company_get_details_v1_response.py | 40 +++++++++---------- .../company_get_financials_v1_response.py | 10 +++-- .../types/company_get_holdings_v1_response.py | 5 ++- .../types/company_get_owners_v1_response.py | 3 +- src/openregister/types/company_name.py | 4 +- src/openregister/types/company_purpose.py | 4 +- src/openregister/types/company_register.py | 3 +- .../insolvency_get_details_v1_response.py | 36 ++++++++++------- .../types/person_get_holdings_v1_response.py | 5 ++- .../search_find_insolvencies_v1_response.py | 7 ++-- .../types/search_find_person_v1_response.py | 3 +- .../transparenzregister_report.py | 2 +- .../transparenzregister_status_flags.py | 1 + .../transparenzregister_ubo_natural_person.py | 1 + .../transparenzregister_validity_point.py | 1 + 19 files changed, 81 insertions(+), 57 deletions(-) diff --git a/.stats.yml b/.stats.yml index 62710a1..f2af74d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openregister/openregister-e5a2c71547443dfedb4cc1afc868bae2d5e54a3dfbf29aa496f7413181deaeb6.yml -openapi_spec_hash: 901154ddde15a51084806fa98ca79f2c +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/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 53da751..e4fe736 100644 --- a/src/openregister/types/company_get_details_v1_response.py +++ b/src/openregister/types/company_get_details_v1_response.py @@ -1,7 +1,7 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. +import datetime from typing import List, Optional -from datetime import datetime from typing_extensions import Literal from pydantic import Field as FieldInfo @@ -40,7 +40,7 @@ class Acquisition(BaseModel): - agreement_date: Optional[str] = None + 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. @@ -57,12 +57,12 @@ class Acquisition(BaseModel): name: str """Current name of the company that was merged into this company.""" - registration_date: str + registration_date: datetime.date """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" class AssetSpinOff(BaseModel): - agreement_date: Optional[str] = None + 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. @@ -79,7 +79,7 @@ class AssetSpinOff(BaseModel): name: str """Current name of the company that received the assets.""" - registration_date: str + registration_date: datetime.date """Date the spin-off was registered. Format: ISO 8601 (YYYY-MM-DD)""" @@ -132,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" @@ -190,7 +190,7 @@ class MergedInto(BaseModel): the company it was merged into. """ - agreement_date: Optional[str] = None + 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. @@ -207,7 +207,7 @@ class MergedInto(BaseModel): name: str """Current name of the company this company was merged into.""" - registration_date: str + registration_date: datetime.date """Date the merger was registered. Format: ISO 8601 (YYYY-MM-DD)""" @@ -219,7 +219,7 @@ class ProfitTransferAgreement(BaseModel): Null if the company has no active agreement. """ - agreement_date: Optional[str] = None + 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 @@ -236,7 +236,7 @@ class ProfitTransferAgreement(BaseModel): name: str """Current name of the parent company.""" - registration_date: str + registration_date: datetime.date """Date the agreement was registered. Format: ISO 8601 (YYYY-MM-DD)""" @@ -256,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" @@ -285,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" @@ -297,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" @@ -332,11 +332,11 @@ class Insolvency(BaseModel): administration_kind: Optional[InsolvencyAdministrationKind] = None """Kind of administration ordered for the proceeding.""" - closed_at: Optional[datetime] = None - """Date the proceeding was closed.""" + closed_at: Optional[datetime.date] = None + """Date the proceeding was closed. Format: ISO 8601 (YYYY-MM-DD)""" - opened_at: Optional[datetime] = None - """Date the proceeding was opened.""" + 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.""" @@ -377,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" @@ -407,7 +407,7 @@ class CompanyGetDetailsV1Response(BaseModel): 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" @@ -462,7 +462,7 @@ 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" 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/insolvency_get_details_v1_response.py b/src/openregister/types/insolvency_get_details_v1_response.py index 22a8494..2ee42bb 100644 --- a/src/openregister/types/insolvency_get_details_v1_response.py +++ b/src/openregister/types/insolvency_get_details_v1_response.py @@ -1,7 +1,7 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from typing import List, Optional -from datetime import datetime +from datetime import date, datetime from typing_extensions import Literal from .._models import BaseModel @@ -83,8 +83,8 @@ class Event(BaseModel): ] """Lifecycle event type of the insolvency proceeding.""" - published_at: datetime - """Date the event was published by the court.""" + published_at: date + """Date the event was published by the court. Format: ISO 8601 (YYYY-MM-DD)""" report_type: Literal[ "security_measures", @@ -102,8 +102,8 @@ class Event(BaseModel): summary: str """Short summary of the publication.""" - decision_date: Optional[datetime] = None - """Date of the court decision, if published.""" + 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.""" @@ -148,11 +148,11 @@ class InsolvencyGetDetailsV1Response(BaseModel): administrator_name: Optional[str] = None """Name of the insolvency administrator.""" - claims_filing_deadline: Optional[datetime] = None - """Deadline for creditors to file their claims.""" + claims_filing_deadline: Optional[date] = None + """Deadline for creditors to file their claims. Format: ISO 8601 (YYYY-MM-DD)""" - closed_at: Optional[datetime] = None - """Date the proceeding was closed.""" + 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. @@ -170,14 +170,20 @@ class InsolvencyGetDetailsV1Response(BaseModel): distribution_claims_total: Optional[float] = None """Total registered claims in the distribution, in euros.""" - first_event_at: Optional[datetime] = None - """Publication date of the first known event of the proceeding.""" + 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[datetime] = None - """Publication date of the most recent known event of the proceeding.""" + 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[datetime] = None - """Date the proceeding was opened.""" + 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/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_insolvencies_v1_response.py b/src/openregister/types/search_find_insolvencies_v1_response.py index 40fa645..d974ccb 100644 --- a/src/openregister/types/search_find_insolvencies_v1_response.py +++ b/src/openregister/types/search_find_insolvencies_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 @@ -30,7 +31,7 @@ class Result(BaseModel): city: Optional[str] = None """City of the debtor. Example: "Berlin" """ - closed_at: Optional[str] = None + closed_at: Optional[date] = None """Date the proceeding was closed. Format: ISO 8601 (YYYY-MM-DD)""" company_id: Optional[str] = None @@ -64,10 +65,10 @@ class Result(BaseModel): insolvency_grounds: Optional[List[str]] = None """Grounds for the insolvency, e.g. "illiquidity", "over_indebtedness".""" - last_event_at: Optional[str] = None + last_event_at: Optional[date] = None """Date of the most recent event in the proceeding. Format: ISO 8601 (YYYY-MM-DD)""" - opened_at: Optional[str] = None + opened_at: Optional[date] = None """Date the proceeding was opened. Format: ISO 8601 (YYYY-MM-DD)""" person_id: Optional[str] = None 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 From c495bf38485e236bc1f327f98d0aa56e2df12dfa Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 13:56:35 +0000 Subject: [PATCH 9/9] release: 3.8.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ pyproject.toml | 2 +- src/openregister/_version.py | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) 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/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/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/_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