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