Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix copy-paste "format: binary" error #4294

Merged
merged 2 commits into from
Jan 10, 2025
Merged
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
36 changes: 16 additions & 20 deletions src/oas.md
Original file line number Diff line number Diff line change
Expand Up @@ -1800,17 +1800,17 @@ requestBody:
schema:
type: object
properties:
# default for a string without `contentEncoding` is `text/plain`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we instead say:

Suggested change
# default for a string without `contentEncoding` is `text/plain`
# default `contentEncoding` for a string is `text/plain`

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mikekistler no, because text/plain is a content type (Encoding Object contentType, or alternatively Schema Object contentMediaType) and not a content encoding (Schema Object contentEncoding, or alternatively Encoding Object headers field, header Content-TransferEncoding) which is something like "base64"

But we could say:

# default content type for a string without `contentEncoding` is `text/plain`

so I'll do that. I totally see how you read it the way you did and I had to think a moment before realizing what was wrong with it.

id:
# default for primitives without a special format is text/plain
type: string
format: uuid
profileImage:
# default for string with binary format is `application/octet-stream`
type: string
format: binary

# default for a schema without `type` is `application/octet-stream`
profileImage: {}

# default for arrays is based on the type in the `items`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and

Suggested change
# default for arrays is based on the type in the `items`
# default `contentEncoding` for arrays is based on the type in the `items`

# subschema, which is an object, so `application/json`
addresses:
# default for arrays is based on the type in the `items`
# subschema, which is an object, so `application/json`
type: array
items:
$ref: '#/components/schemas/Address'
Expand All @@ -1828,31 +1828,27 @@ requestBody:
schema:
type: object
properties:
# No Encoding Object, so use default `text/plain`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and

Suggested change
# No Encoding Object, so use default `text/plain`
# No Encoding Object, so use default `contentEncoding` `text/plain`

id:
# default is `text/plain`
type: string
format: uuid

# Encoding Object overrides the default `application/json`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and maybe

Suggested change
# Encoding Object overrides the default `application/json`
# Encoding Object overrides the default `contentEncoding` `application/json`

# for each item in the array with `application/xml; charset=utf-8`
addresses:
# default based on the `items` subschema would be
# `application/json`, but we want these address objects
# serialized as `application/xml` instead
description: addresses in XML format
type: array
items:
$ref: '#/components/schemas/Address'
profileImage:
# default is application/octet-stream, but we can declare
# a more specific image type or types
type: string
format: binary

# Encoding Object accepts only PNG or JPEG, and also describes
# a custom header for just this part in the multipart format
profileImage: {}

encoding:
addresses:
# require XML Content-Type in utf-8 encoding
# This is applied to each address part corresponding
# to each address in he array
contentType: application/xml; charset=utf-8
profileImage:
# only accept png or jpeg
contentType: image/png, image/jpeg
headers:
X-Rate-Limit-Limit:
Expand Down
Loading