Skip to content

Support array of format: binary items in multipart/form-data request bodies #1255

Open
@b-morgenthaler

Description

@b-morgenthaler

Describe the bug
When an OpenAPI 3.0 schema defines a property as an array of binaries inside a multipart/form-data requestBody, the generator currently treats it as a JSON body and emits a single body parameter. As a result:

  • The generated sync_detailed(...) signature has only:
def sync_detailed(
    *,
    client: Client,
    body: UploadFilesPostBody,
    hash_: str,
) -> Response[Any]:
    …
  • Internally body.files (a list of File objects with payload: BinaryIO) is passed to json=…, causing serialization errors.

OpenAPI Spec File

paths:
  /upload_files:
    post:
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                hash_:
                  type: string
                files:
                  type: array
                  items:
                    type: string
                    format: binary
      responses:
        '200':
          description: OK

What actually happens

  • The generator emits a single body: UploadFilesPostBody parameter.
  • When calling sync_detailed(..., body=…), httpx is invoked with json=… and fails on BinaryIO because it isn’t valid JSON.

Desktop:

  • OS: Windows 10
  • Python Version: cPython 3.12.8
  • openapi-python-client version 0.24.3

Additional context
None - if anything is needed, please let me know

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions