Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 40 additions & 20 deletions robosystems_client/api/auth/get_passkey_registration_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,22 @@ def _build_response(

def sync_detailed(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterOptionsRequest,
) -> Response[CeremonyOptionsResponse | ErrorResponse | HTTPValidationError]:
"""Passkey Registration Options

Begin a passkey enrollment ceremony.
Begin a passkey enrollment ceremony. The settings lane requires a fresh re-auth proof (password or
assertion); the forced lane presents its enrollment token.

Args:
body (PasskeyRegisterOptionsRequest): Begin enrollment. mfa_token is the forced-enrollment
lane; omitted for
an authenticated settings-flow enrollment.
body (PasskeyRegisterOptionsRequest): Begin enrollment.

Two disjoint lanes: ``mfa_token`` (forced enrollment — the token was minted
seconds after a password verify, so it is its own freshness proof) or an
authenticated settings-flow enrollment, which must carry a fresh re-auth
proof — ``password``, or a ``reauth``-ceremony ``assertion`` when adding a
passkey beside an existing one.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
Expand All @@ -116,17 +121,22 @@ def sync_detailed(

def sync(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterOptionsRequest,
) -> CeremonyOptionsResponse | ErrorResponse | HTTPValidationError | None:
"""Passkey Registration Options

Begin a passkey enrollment ceremony.
Begin a passkey enrollment ceremony. The settings lane requires a fresh re-auth proof (password or
assertion); the forced lane presents its enrollment token.

Args:
body (PasskeyRegisterOptionsRequest): Begin enrollment. mfa_token is the forced-enrollment
lane; omitted for
an authenticated settings-flow enrollment.
body (PasskeyRegisterOptionsRequest): Begin enrollment.

Two disjoint lanes: ``mfa_token`` (forced enrollment — the token was minted
seconds after a password verify, so it is its own freshness proof) or an
authenticated settings-flow enrollment, which must carry a fresh re-auth
proof — ``password``, or a ``reauth``-ceremony ``assertion`` when adding a
passkey beside an existing one.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
Expand All @@ -144,17 +154,22 @@ def sync(

async def asyncio_detailed(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterOptionsRequest,
) -> Response[CeremonyOptionsResponse | ErrorResponse | HTTPValidationError]:
"""Passkey Registration Options

Begin a passkey enrollment ceremony.
Begin a passkey enrollment ceremony. The settings lane requires a fresh re-auth proof (password or
assertion); the forced lane presents its enrollment token.

Args:
body (PasskeyRegisterOptionsRequest): Begin enrollment. mfa_token is the forced-enrollment
lane; omitted for
an authenticated settings-flow enrollment.
body (PasskeyRegisterOptionsRequest): Begin enrollment.

Two disjoint lanes: ``mfa_token`` (forced enrollment — the token was minted
seconds after a password verify, so it is its own freshness proof) or an
authenticated settings-flow enrollment, which must carry a fresh re-auth
proof — ``password``, or a ``reauth``-ceremony ``assertion`` when adding a
passkey beside an existing one.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
Expand All @@ -175,17 +190,22 @@ async def asyncio_detailed(

async def asyncio(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterOptionsRequest,
) -> CeremonyOptionsResponse | ErrorResponse | HTTPValidationError | None:
"""Passkey Registration Options

Begin a passkey enrollment ceremony.
Begin a passkey enrollment ceremony. The settings lane requires a fresh re-auth proof (password or
assertion); the forced lane presents its enrollment token.

Args:
body (PasskeyRegisterOptionsRequest): Begin enrollment. mfa_token is the forced-enrollment
lane; omitted for
an authenticated settings-flow enrollment.
body (PasskeyRegisterOptionsRequest): Begin enrollment.

Two disjoint lanes: ``mfa_token`` (forced enrollment — the token was minted
seconds after a password verify, so it is its own freshness proof) or an
authenticated settings-flow enrollment, which must carry a fresh re-auth
proof — ``password``, or a ``reauth``-ceremony ``assertion`` when adding a
passkey beside an existing one.

Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
Expand Down
8 changes: 4 additions & 4 deletions robosystems_client/api/auth/verify_passkey_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def _build_response(

def sync_detailed(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterVerifyRequest,
) -> Response[ErrorResponse | HTTPValidationError | PasskeyRegisterVerifyResponse]:
"""Passkey Registration Verify
Expand Down Expand Up @@ -116,7 +116,7 @@ def sync_detailed(

def sync(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterVerifyRequest,
) -> ErrorResponse | HTTPValidationError | PasskeyRegisterVerifyResponse | None:
"""Passkey Registration Verify
Expand Down Expand Up @@ -144,7 +144,7 @@ def sync(

async def asyncio_detailed(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterVerifyRequest,
) -> Response[ErrorResponse | HTTPValidationError | PasskeyRegisterVerifyResponse]:
"""Passkey Registration Verify
Expand Down Expand Up @@ -175,7 +175,7 @@ async def asyncio_detailed(

async def asyncio(
*,
client: AuthenticatedClient,
client: AuthenticatedClient | Client,
body: PasskeyRegisterVerifyRequest,
) -> ErrorResponse | HTTPValidationError | PasskeyRegisterVerifyResponse | None:
"""Passkey Registration Verify
Expand Down
16 changes: 8 additions & 8 deletions robosystems_client/api/billing/get_checkout_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ def sync_detailed(
"""Get Checkout Session Status

Poll after returning from Stripe Checkout. Status progresses: pending_payment → provisioning →
active. When active, resource_id is populated; for graphs, operation_id tracks SSE provisioning
progress.
active. When active, resource_id is populated. `operation_id` is always null for webhook-driven
provisioning and cannot be used to follow progress — poll this endpoint instead.

Args:
session_id (str):
Expand Down Expand Up @@ -127,8 +127,8 @@ def sync(
"""Get Checkout Session Status

Poll after returning from Stripe Checkout. Status progresses: pending_payment → provisioning →
active. When active, resource_id is populated; for graphs, operation_id tracks SSE provisioning
progress.
active. When active, resource_id is populated. `operation_id` is always null for webhook-driven
provisioning and cannot be used to follow progress — poll this endpoint instead.

Args:
session_id (str):
Expand All @@ -155,8 +155,8 @@ async def asyncio_detailed(
"""Get Checkout Session Status

Poll after returning from Stripe Checkout. Status progresses: pending_payment → provisioning →
active. When active, resource_id is populated; for graphs, operation_id tracks SSE provisioning
progress.
active. When active, resource_id is populated. `operation_id` is always null for webhook-driven
provisioning and cannot be used to follow progress — poll this endpoint instead.

Args:
session_id (str):
Expand Down Expand Up @@ -186,8 +186,8 @@ async def asyncio(
"""Get Checkout Session Status

Poll after returning from Stripe Checkout. Status progresses: pending_payment → provisioning →
active. When active, resource_id is populated; for graphs, operation_id tracks SSE provisioning
progress.
active. When active, resource_id is populated. `operation_id` is always null for webhook-driven
provisioning and cannot be used to follow progress — poll this endpoint instead.

Args:
session_id (str):
Expand Down
4 changes: 4 additions & 0 deletions robosystems_client/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,9 @@
from .passkey_login_verify_request import PasskeyLoginVerifyRequest
from .passkey_login_verify_request_assertion import PasskeyLoginVerifyRequestAssertion
from .passkey_register_options_request import PasskeyRegisterOptionsRequest
from .passkey_register_options_request_assertion_type_0 import (
PasskeyRegisterOptionsRequestAssertionType0,
)
from .passkey_register_verify_request import PasskeyRegisterVerifyRequest
from .passkey_register_verify_request_credential import (
PasskeyRegisterVerifyRequestCredential,
Expand Down Expand Up @@ -1330,6 +1333,7 @@
"PasskeyLoginVerifyRequest",
"PasskeyLoginVerifyRequestAssertion",
"PasskeyRegisterOptionsRequest",
"PasskeyRegisterOptionsRequestAssertionType0",
"PasskeyRegisterVerifyRequest",
"PasskeyRegisterVerifyRequestCredential",
"PasskeyRegisterVerifyResponse",
Expand Down
5 changes: 4 additions & 1 deletion robosystems_client/models/checkout_status_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ class CheckoutStatusResponse:
subscription_id (str): Internal subscription ID
resource_id (None | str | Unset): Resource ID (graph_id for both graphs and repositories) once provisioned. For
repositories, this is the repository slug (e.g., 'sec')
operation_id (None | str | Unset): SSE operation ID for monitoring provisioning progress
operation_id (None | str | Unset): Always null. Webhook-driven provisioning passes no operation id
(`_trigger_resource_provisioning` calls `run_graph_provisioning` with `operation_id=None`), so there is no SSE
stream to follow — poll the status endpoint instead. Retained rather than removed because it is on a published
response shape; wiring it is a feature, not a fix.
error (None | str | Unset): Error message if checkout failed
"""

Expand Down
22 changes: 22 additions & 0 deletions robosystems_client/models/file_upload_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,15 @@ class FileUploadRequest:
file_name (str): File name to upload
content_type (str | Unset): File MIME type Default: 'application/x-parquet'.
table_name (None | str | Unset): Table name to associate file with (required for first-class /files endpoint)
file_size_bytes (int | None | Unset): Size of the file about to be uploaded, in bytes. Optional; when supplied,
an over-limit file is rejected here instead of after it has been pushed to S3 and rejected by ingest-file.
Advisory only — the authoritative check measures the object after upload.
"""

file_name: str
content_type: str | Unset = "application/x-parquet"
table_name: None | str | Unset = UNSET
file_size_bytes: int | None | Unset = UNSET

def to_dict(self) -> dict[str, Any]:
file_name = self.file_name
Expand All @@ -34,6 +38,12 @@ def to_dict(self) -> dict[str, Any]:
else:
table_name = self.table_name

file_size_bytes: int | None | Unset
if isinstance(self.file_size_bytes, Unset):
file_size_bytes = UNSET
else:
file_size_bytes = self.file_size_bytes

field_dict: dict[str, Any] = {}

field_dict.update(
Expand All @@ -45,6 +55,8 @@ def to_dict(self) -> dict[str, Any]:
field_dict["content_type"] = content_type
if table_name is not UNSET:
field_dict["table_name"] = table_name
if file_size_bytes is not UNSET:
field_dict["file_size_bytes"] = file_size_bytes

return field_dict

Expand All @@ -64,10 +76,20 @@ def _parse_table_name(data: object) -> None | str | Unset:

table_name = _parse_table_name(d.pop("table_name", UNSET))

def _parse_file_size_bytes(data: object) -> int | None | Unset:
if data is None:
return data
if isinstance(data, Unset):
return data
return cast(int | None | Unset, data)

file_size_bytes = _parse_file_size_bytes(d.pop("file_size_bytes", UNSET))

file_upload_request = cls(
file_name=file_name,
content_type=content_type,
table_name=table_name,
file_size_bytes=file_size_bytes,
)

return file_upload_request
Loading