Skip to content

katana_public_api_client.api.serial_number.create_serial_numbers

katana_public_api_client.api.serial_number.create_serial_numbers

Classes

Functions

asyncio(*, client, body) async

Attach serial numbers

Attaches pre-existing serial-number strings to a resource. This endpoint did not mint a new string for any tested resource type or manufacturing- order state. Serial identities are created by inventory-producing workflows such as production and goods receipt.

Error cases (verified live 2026-07-14, #980): a non-existent resource_id returns 404 NotFoundError with a type-specific message (e.g. manufacturing order <id> not found / production <id> not found). A resource_type outside the CreateSerialNumberResourceType enum returns 422 with an Ajv-style validation detail. Unknown, duplicate, and mixed valid/invalid strings hard-fail the whole request with 422; the legacy failed array was never observed. A completed manufacturing order can instead reject because it has no remaining quantity and direct callers to update completed production traceability.

Manual attachment to valid standalone and make-to-order manufacturing orders returned 404 in September 2026, before and after production. Production and fulfillment can use their unified traceability contracts without a successful call to this endpoint.

Transfer response quirks: on a successful transfer the moved record's transaction_id may be the literal string undefined and resource_id may be null — re-fetch via GET /serial_numbers to confirm the landing state.

Parameters:

  • body (CreateSerialNumbersRequest) –

    Attach existing serial-number strings to a resource. Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,

    983). Unknown strings abort with 422; this endpoint did not mint new strings in current

    live probes.

Raises:

  • UnexpectedStatus –

    If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.

  • TimeoutException –

    If the request takes longer than Client.timeout.

Returns:

Source code in katana_public_api_client/api/serial_number/create_serial_numbers.py
async def asyncio(
    *,
    client: AuthenticatedClient | Client,
    body: CreateSerialNumbersRequest,
) -> Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse | None:
    """Attach serial numbers

     Attaches pre-existing serial-number strings to a resource. This endpoint
    did not mint a new string for any tested resource type or manufacturing-
    order state. Serial identities are created by inventory-producing
    workflows such as production and goods receipt.

    **Error cases** (verified live 2026-07-14, #980): a non-existent
    ``resource_id`` returns ``404 NotFoundError`` with a type-specific
    message (e.g. ``manufacturing order <id> not found`` /
    ``production <id> not found``). A ``resource_type`` outside the
    ``CreateSerialNumberResourceType`` enum returns ``422`` with an
    Ajv-style validation detail. Unknown, duplicate, and mixed
    valid/invalid strings hard-fail the whole request with ``422``; the
    legacy ``failed`` array was never observed. A completed manufacturing
    order can instead reject because it has no remaining quantity and
    direct callers to update completed production traceability.

    Manual attachment to valid standalone and make-to-order manufacturing
    orders returned ``404`` in September 2026, before and after production.
    Production and fulfillment can use their unified ``traceability``
    contracts without a successful call to this endpoint.

    **Transfer response quirks:** on a successful transfer the moved
    record's ``transaction_id`` may be the literal string
    ``undefined`` and ``resource_id`` may be ``null`` — re-fetch via
    ``GET /serial_numbers`` to confirm the landing state.

    Args:
        body (CreateSerialNumbersRequest): Attach existing serial-number strings to a resource.
            Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op
            (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,
            #983). Unknown strings abort with 422; this endpoint did not mint new strings in current
            live probes.

    Raises:
        errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
        httpx.TimeoutException: If the request takes longer than Client.timeout.


    Returns:
        Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse
    """

    return (
        await asyncio_detailed(
            client=client,
            body=body,
        )
    ).parsed

asyncio_detailed(*, client, body) async

Attach serial numbers

Attaches pre-existing serial-number strings to a resource. This endpoint did not mint a new string for any tested resource type or manufacturing- order state. Serial identities are created by inventory-producing workflows such as production and goods receipt.

Error cases (verified live 2026-07-14, #980): a non-existent resource_id returns 404 NotFoundError with a type-specific message (e.g. manufacturing order <id> not found / production <id> not found). A resource_type outside the CreateSerialNumberResourceType enum returns 422 with an Ajv-style validation detail. Unknown, duplicate, and mixed valid/invalid strings hard-fail the whole request with 422; the legacy failed array was never observed. A completed manufacturing order can instead reject because it has no remaining quantity and direct callers to update completed production traceability.

Manual attachment to valid standalone and make-to-order manufacturing orders returned 404 in September 2026, before and after production. Production and fulfillment can use their unified traceability contracts without a successful call to this endpoint.

Transfer response quirks: on a successful transfer the moved record's transaction_id may be the literal string undefined and resource_id may be null — re-fetch via GET /serial_numbers to confirm the landing state.

Parameters:

  • body (CreateSerialNumbersRequest) –

    Attach existing serial-number strings to a resource. Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,

    983). Unknown strings abort with 422; this endpoint did not mint new strings in current

    live probes.

Raises:

  • UnexpectedStatus –

    If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.

  • TimeoutException –

    If the request takes longer than Client.timeout.

Returns:

Source code in katana_public_api_client/api/serial_number/create_serial_numbers.py
async def asyncio_detailed(
    *,
    client: AuthenticatedClient | Client,
    body: CreateSerialNumbersRequest,
) -> Response[
    Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse
]:
    """Attach serial numbers

     Attaches pre-existing serial-number strings to a resource. This endpoint
    did not mint a new string for any tested resource type or manufacturing-
    order state. Serial identities are created by inventory-producing
    workflows such as production and goods receipt.

    **Error cases** (verified live 2026-07-14, #980): a non-existent
    ``resource_id`` returns ``404 NotFoundError`` with a type-specific
    message (e.g. ``manufacturing order <id> not found`` /
    ``production <id> not found``). A ``resource_type`` outside the
    ``CreateSerialNumberResourceType`` enum returns ``422`` with an
    Ajv-style validation detail. Unknown, duplicate, and mixed
    valid/invalid strings hard-fail the whole request with ``422``; the
    legacy ``failed`` array was never observed. A completed manufacturing
    order can instead reject because it has no remaining quantity and
    direct callers to update completed production traceability.

    Manual attachment to valid standalone and make-to-order manufacturing
    orders returned ``404`` in September 2026, before and after production.
    Production and fulfillment can use their unified ``traceability``
    contracts without a successful call to this endpoint.

    **Transfer response quirks:** on a successful transfer the moved
    record's ``transaction_id`` may be the literal string
    ``undefined`` and ``resource_id`` may be ``null`` — re-fetch via
    ``GET /serial_numbers`` to confirm the landing state.

    Args:
        body (CreateSerialNumbersRequest): Attach existing serial-number strings to a resource.
            Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op
            (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,
            #983). Unknown strings abort with 422; this endpoint did not mint new strings in current
            live probes.

    Raises:
        errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
        httpx.TimeoutException: If the request takes longer than Client.timeout.


    Returns:
        Response[Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse]
    """

    kwargs = _get_kwargs(
        body=body,
    )

    response = await client.get_async_httpx_client().request(**kwargs)

    return _build_response(client=client, response=response)

sync(*, client, body)

Attach serial numbers

Attaches pre-existing serial-number strings to a resource. This endpoint did not mint a new string for any tested resource type or manufacturing- order state. Serial identities are created by inventory-producing workflows such as production and goods receipt.

Error cases (verified live 2026-07-14, #980): a non-existent resource_id returns 404 NotFoundError with a type-specific message (e.g. manufacturing order <id> not found / production <id> not found). A resource_type outside the CreateSerialNumberResourceType enum returns 422 with an Ajv-style validation detail. Unknown, duplicate, and mixed valid/invalid strings hard-fail the whole request with 422; the legacy failed array was never observed. A completed manufacturing order can instead reject because it has no remaining quantity and direct callers to update completed production traceability.

Manual attachment to valid standalone and make-to-order manufacturing orders returned 404 in September 2026, before and after production. Production and fulfillment can use their unified traceability contracts without a successful call to this endpoint.

Transfer response quirks: on a successful transfer the moved record's transaction_id may be the literal string undefined and resource_id may be null — re-fetch via GET /serial_numbers to confirm the landing state.

Parameters:

  • body (CreateSerialNumbersRequest) –

    Attach existing serial-number strings to a resource. Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,

    983). Unknown strings abort with 422; this endpoint did not mint new strings in current

    live probes.

Raises:

  • UnexpectedStatus –

    If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.

  • TimeoutException –

    If the request takes longer than Client.timeout.

Returns:

Source code in katana_public_api_client/api/serial_number/create_serial_numbers.py
def sync(
    *,
    client: AuthenticatedClient | Client,
    body: CreateSerialNumbersRequest,
) -> Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse | None:
    """Attach serial numbers

     Attaches pre-existing serial-number strings to a resource. This endpoint
    did not mint a new string for any tested resource type or manufacturing-
    order state. Serial identities are created by inventory-producing
    workflows such as production and goods receipt.

    **Error cases** (verified live 2026-07-14, #980): a non-existent
    ``resource_id`` returns ``404 NotFoundError`` with a type-specific
    message (e.g. ``manufacturing order <id> not found`` /
    ``production <id> not found``). A ``resource_type`` outside the
    ``CreateSerialNumberResourceType`` enum returns ``422`` with an
    Ajv-style validation detail. Unknown, duplicate, and mixed
    valid/invalid strings hard-fail the whole request with ``422``; the
    legacy ``failed`` array was never observed. A completed manufacturing
    order can instead reject because it has no remaining quantity and
    direct callers to update completed production traceability.

    Manual attachment to valid standalone and make-to-order manufacturing
    orders returned ``404`` in September 2026, before and after production.
    Production and fulfillment can use their unified ``traceability``
    contracts without a successful call to this endpoint.

    **Transfer response quirks:** on a successful transfer the moved
    record's ``transaction_id`` may be the literal string
    ``undefined`` and ``resource_id`` may be ``null`` — re-fetch via
    ``GET /serial_numbers`` to confirm the landing state.

    Args:
        body (CreateSerialNumbersRequest): Attach existing serial-number strings to a resource.
            Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op
            (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,
            #983). Unknown strings abort with 422; this endpoint did not mint new strings in current
            live probes.

    Raises:
        errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
        httpx.TimeoutException: If the request takes longer than Client.timeout.


    Returns:
        Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse
    """

    return sync_detailed(
        client=client,
        body=body,
    ).parsed

sync_detailed(*, client, body)

Attach serial numbers

Attaches pre-existing serial-number strings to a resource. This endpoint did not mint a new string for any tested resource type or manufacturing- order state. Serial identities are created by inventory-producing workflows such as production and goods receipt.

Error cases (verified live 2026-07-14, #980): a non-existent resource_id returns 404 NotFoundError with a type-specific message (e.g. manufacturing order <id> not found / production <id> not found). A resource_type outside the CreateSerialNumberResourceType enum returns 422 with an Ajv-style validation detail. Unknown, duplicate, and mixed valid/invalid strings hard-fail the whole request with 422; the legacy failed array was never observed. A completed manufacturing order can instead reject because it has no remaining quantity and direct callers to update completed production traceability.

Manual attachment to valid standalone and make-to-order manufacturing orders returned 404 in September 2026, before and after production. Production and fulfillment can use their unified traceability contracts without a successful call to this endpoint.

Transfer response quirks: on a successful transfer the moved record's transaction_id may be the literal string undefined and resource_id may be null — re-fetch via GET /serial_numbers to confirm the landing state.

Parameters:

  • body (CreateSerialNumbersRequest) –

    Attach existing serial-number strings to a resource. Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,

    983). Unknown strings abort with 422; this endpoint did not mint new strings in current

    live probes.

Raises:

  • UnexpectedStatus –

    If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.

  • TimeoutException –

    If the request takes longer than Client.timeout.

Returns:

Source code in katana_public_api_client/api/serial_number/create_serial_numbers.py
def sync_detailed(
    *,
    client: AuthenticatedClient | Client,
    body: CreateSerialNumbersRequest,
) -> Response[
    Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse
]:
    """Attach serial numbers

     Attaches pre-existing serial-number strings to a resource. This endpoint
    did not mint a new string for any tested resource type or manufacturing-
    order state. Serial identities are created by inventory-producing
    workflows such as production and goods receipt.

    **Error cases** (verified live 2026-07-14, #980): a non-existent
    ``resource_id`` returns ``404 NotFoundError`` with a type-specific
    message (e.g. ``manufacturing order <id> not found`` /
    ``production <id> not found``). A ``resource_type`` outside the
    ``CreateSerialNumberResourceType`` enum returns ``422`` with an
    Ajv-style validation detail. Unknown, duplicate, and mixed
    valid/invalid strings hard-fail the whole request with ``422``; the
    legacy ``failed`` array was never observed. A completed manufacturing
    order can instead reject because it has no remaining quantity and
    direct callers to update completed production traceability.

    Manual attachment to valid standalone and make-to-order manufacturing
    orders returned ``404`` in September 2026, before and after production.
    Production and fulfillment can use their unified ``traceability``
    contracts without a successful call to this endpoint.

    **Transfer response quirks:** on a successful transfer the moved
    record's ``transaction_id`` may be the literal string
    ``undefined`` and ``resource_id`` may be ``null`` — re-fetch via
    ``GET /serial_numbers`` to confirm the landing state.

    Args:
        body (CreateSerialNumbersRequest): Attach existing serial-number strings to a resource.
            Only resource_id is required by the gateway. Omitting resource_type is accepted as a no-op
            (204 No Content); supply resource_type and serial_numbers to attempt an attachment (#830,
            #983). Unknown strings abort with 422; this endpoint did not mint new strings in current
            live probes.

    Raises:
        errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
        httpx.TimeoutException: If the request takes longer than Client.timeout.


    Returns:
        Response[Any | CreateSerialNumbersResponse | DetailedErrorResponse | ErrorResponse]
    """

    kwargs = _get_kwargs(
        body=body,
    )

    response = client.get_httpx_client().request(
        **kwargs,
    )

    return _build_response(client=client, response=response)