From 13eb200f12f2ad0cb5a79425dedd01ea8ae3e2a4 Mon Sep 17 00:00:00 2001 From: ma91n Date: Mon, 2 Sep 2024 14:17:33 +0900 Subject: [PATCH] fix openapiv3 --- .../OpenAPI_Specification_3.0.3.md | 913 +++++++++--------- .../reference/DB_OpenAPI_Mapping_Example.md | 18 - .../reference/divided_files_sample.zip | Bin 7022 -> 0 bytes .../sample_divided/common/error.yaml | 10 + .../sample_divided/common/pet.yaml | 32 + .../sample_divided/openapi.gen.yaml | 264 +++++ .../sample_divided/openapi.yaml | 30 + .../examples/res_example1.yaml | 16 + .../pets-pet-id_get/pets-pet-id_get.yaml | 73 ++ .../pets_get/examples/res_example1.yaml | 32 + .../pets_get/examples/res_example2.yaml | 1 + .../sample_divided/pets_get/pets_get.yaml | 53 + .../pets_post/examples/req_example1.yaml | 9 + .../sample_divided/pets_post/pets_post.yaml | 40 + 14 files changed, 991 insertions(+), 500 deletions(-) delete mode 100644 documents/forOpenAPISpecification/reference/DB_OpenAPI_Mapping_Example.md delete mode 100644 documents/forOpenAPISpecification/reference/divided_files_sample.zip create mode 100644 documents/forOpenAPISpecification/sample_divided/common/error.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/common/pet.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/openapi.gen.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/openapi.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets-pet-id_get/examples/res_example1.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets-pet-id_get/pets-pet-id_get.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets_get/examples/res_example1.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets_get/examples/res_example2.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets_get/pets_get.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets_post/examples/req_example1.yaml create mode 100644 documents/forOpenAPISpecification/sample_divided/pets_post/pets_post.yaml diff --git a/documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md b/documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md index 84a41cfb..5eb16fe7 100644 --- a/documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md +++ b/documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md @@ -961,9 +961,6 @@ OpenAPI ドキュメントを作成する上での設計上ポイントをいく ## ファイルアップロード -
-詳細をみる - Web API におけるファイルアップロードのよく利用される実装手段は、大きく分けて以下の 3 手法に分類できる。 1. ファイルのコンテンツを Base64 などにエンコードして、JSON の項目として設定し、リクエストボディで送る @@ -1003,26 +1000,16 @@ A->>B: ③ファイルアップロード完了(受付ID、キー、属性) 上記どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。 -
- ## ファイルダウンロード -
-詳細をみる - ファイルアップロードと同様、オブジェクトストレージの Signed URL 経由を経由してのダウンロードさせる手法を推奨する。Web API としてはオブジェクトストレージにダウンロード用のファイルを書き込み、クライアントが取得するための Signed URL をレスポンスの JSON 項目に渡す方式である。 もし、サムネイルやアイコン画像など、ファイル容量がごく小さい場合は Base64 にエンコードして JSON に埋め込んで渡しても良い。線引をどこに設置するかは本規約で定義しない。 どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。 -
- ## CORS -
-詳細をみる - CORS(Cross-Origin Resource Sharing)のために、options メソッドの追記は **原則不要** とする。 理由: @@ -1038,13 +1025,8 @@ CORS(Cross-Origin Resource Sharing)のために、options メソッドの追 [^1]: https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/enable-cors-for-resource-using-swagger-importer-tool.html -
- ## OpenTelemetry Traceparent HTTP Header -
-詳細をみる - OpenOpenTelemetry で用いるられる[traceparent](https://www.w3.org/TR/trace-context/) のリクエストヘッダは OpenAPI で **原則不要** とする。 理由: @@ -1052,12 +1034,13 @@ OpenOpenTelemetry で用いるられる[traceparent](https://www.w3.org/TR/trace - OpenTelemetry が定めるヘッダ類は、API 横断的に設定されるべきものであり、ミドルウェアやフレームワーク側などでの一律の制御を推奨するため - 記載することにより、OpenOpenTelemetry に対応していることを明記し開発者に周知できるメリットより、各アプリ開発者が生成されたコードで悩んだり、誤解されることを回避したいため -
+## 値が存在しないという状態の表現 -## バリデーション +原則 `null` を用いず、パラメータのキー自体を含めないこと(`undefined`)による表現を行う。 -
-詳細をみる +詳細は[フューチャー技術ブログ記事](https://future-architect.github.io/articles/20211028b/)を参照されたい + +## バリデーション パラメータのバリデーションをどこまで厳密に定義すべきかという議論はしばしば行われる。 @@ -1192,24 +1175,8 @@ remind_time: pattern: "^(2[0-3]|[01][0-9]):([0-5][0-9])$" ``` -
- -## 値が存在しないという状態の表現 - -
-詳細をみる - -原則 `null` を用いず、パラメータのキー自体を含めないこと(`undefined`)による表現を行う。 - -詳細は[技術ブログ記事](https://future-architect.github.io/articles/20211028b/)を参照されたい - -
- ## ファイル分割 -
-詳細をみる - OpenAPI ドキュメントは単一のファイルで構成することも複数の分割されたファイルで構成することもできるが、**複数のファイルに分割する**ことを推奨する。 理由: @@ -1226,7 +1193,7 @@ OpenAPI ドキュメントは単一のファイルで構成することも複数 ### サンプル説明 -分割方法 1, 2 の両方に当てはまる場合のサンプルを用いて説明する。`openapi.yaml` とディレクトリ構成は下の通り。サンプルの全量は [サンプル zip Download](./reference/divided_files_sample.zip)からダウンロード可能。 +分割方法 1, 2 の両方に当てはまる場合のサンプルを用いて説明する。`openapi.yaml` とディレクトリ構成は下の通り。全量は [sample_divided](https://github.com/future-architect/coding-standards/tree/master/documents/forOpenAPISpecification/sample_divided)を参照すること。 - 機能単位(path, method 単位)にディレクトリを作成して、それぞれの定義ファイルを格納する。ディレクトリ名は `{path}_{method}` とすると管理し易い - `components` の `schemas` には、 @@ -1234,474 +1201,456 @@ OpenAPI ドキュメントは単一のファイルで構成することも複数 - 各 API のリクエスト/リスポンスモデルの中で、モデルがネストする場合は、各モデルの単位で書き出す(例えば、`PetDetail`, `Pedigree`) - ※schemas のモデルの中身は別ファイルに定義が可能だが、大本の openapi.yaml にも命名のみ定義が必要。openapi.yaml の定義が無いと swaggerUI で確認した際に schemas 定義が見えなくなってしまう -
- ファイル分割例: openapi.yaml - - ```yaml - openapi: "3.0.3" - info: - version: 1.0.0 - title: Swagger Petstore - license: - name: MIT - servers: - - url: http://petstore.swagger.io/v1 - tags: - - name: pets - description: Everything about your Pets - paths: - /pets: - get: - $ref: "./pets_get/pets_get.yaml#/operation" - post: - $ref: "./pets_post/pets_post.yaml#/operation" - /pets/{petId}: - get: - $ref: "./pets-pet-id_get/pets-pet-id_get.yaml#/operation" - components: - schemas: - PetDetail: - $ref: "./pets-pet-id_get/pets-pet-id_get.yaml#/components/schemas/PetDetail" - Pedigree: - $ref: "./pets-pet-id_get/pets-pet-id_get.yaml#/components/schemas/Pedigree" - Pet: - $ref: "./common/pet.yaml" - Error: - $ref: "./common/error.yaml" - ``` - -
- -
- ファイル分割例: ディレクトリ構成 - - ```sh - ├─openapi.gen.yaml - ├─openapi.yaml - │ - ├─common - │ ├─error.yaml - │ └─pet.yaml - │ - ├─pets-pet-id_get - │ ├─pets-pet-id_get.yaml - │ └─examples - │ └─res_example1.yaml - │ - ├─pets_get - │ ├─pets_get.yaml - │ └─examples - │ ├─res_example1.yaml - │ └─res_example2.yaml - │ - └─pets_post - ├─pets_post.yaml - └─examples - └─req_example1.yaml - ``` - -
+```yaml +# openapi.yaml(ファイル分割例) +openapi: "3.0.3" +info: + version: 1.0.0 + title: Swagger Petstore + license: + name: MIT +servers: + - url: http://petstore.swagger.io/v1 +tags: + - name: pets + description: Everything about your Pets +paths: + /pets: + get: + $ref: "./pets_get/pets_get.yaml#/operation" + post: + $ref: "./pets_post/pets_post.yaml#/operation" + /pets/{petId}: + get: + $ref: "./pets-pet-id_get/pets-pet-id_get.yaml#/operation" +components: + schemas: + PetDetail: + $ref: "./pets-pet-id_get/pets-pet-id_get.yaml#/components/schemas/PetDetail" + Pedigree: + $ref: "./pets-pet-id_get/pets-pet-id_get.yaml#/components/schemas/Pedigree" + Pet: + $ref: "./common/pet.yaml" + Error: + $ref: "./common/error.yaml" +``` + +```sh +# ディレクトリ構成(ファイル分割例) + +├─openapi.gen.yaml +├─openapi.yaml +├─common +│ ├─error.yaml +│ └─pet.yaml +├─pets-pet-id_get +│ ├─pets-pet-id_get.yaml +│ └─examples +│ └─res_example1.yaml +├─pets_get +│ ├─pets_get.yaml +│ └─examples +│ ├─res_example1.yaml +│ └─res_example2.yaml +└─pets_post + ├─pets_post.yaml + └─examples + └─req_example1.yaml +``` - `openapi.yaml` の `paths` に記載した API ファイルは以下のように作成する - 複数 API 間に共通のモデルについては `openapi.yaml` に指定したキー(`../openapi.yaml#/components/schemas/Pet`)を参照する - `examples` には、各 API のテストケース ID をキーとして指定(`ResExample1`)し、`value` に該当するテストケースのデータファイルパスを指定(`./examples/res_example1.yaml`)する。ファイル名は、指定したキーをスネークケースに変換したものを使用するとよい -
- API別ファイルの記載例: pets-pet-id_get.yaml - - ```yaml - operation: - operationId: get-pets-pet-id - summary: Details for a pet - tags: - - pets - parameters: - - name: petId - in: path - required: true - description: The id of the pet to retrieve - schema: - type: string - responses: - "200": - description: Expected response to a valid request - content: - application/json: - schema: - $ref: "#/components/responses/ResPetsPetIdGet" - examples: - ResExample1: - value: - $ref: "./examples/res_example1.yaml" - "404": - description: not found error - content: - application/json: - schema: - $ref: "../openapi.yaml#/components/schemas/Error" - "500": - description: unexpected error - content: - application/json: - schema: - $ref: "../openapi.yaml#/components/schemas/Error" - components: - schemas: - PetDetail: - type: object - properties: - breeder: - type: string - date_of_birth: - type: string - format: date - pedigree: - $ref: "#/components/schemas/Pedigree" - Pedigree: - required: - - registration_no - - date_of_registration - - pedigree_image - type: object - properties: - registration_no: - type: integer - format: int64 - date_of_registration: - type: string - format: date - pedigree_image: - type: string - responses: - ResPetsPetIdGet: - required: - - pet - - pet_detail - type: object - properties: - pet: - $ref: "../common/pet.yaml" - pet_detail: - $ref: "#/components/schemas/PetDetail" - ``` - -
+```yaml +# pets-pet-id_get.yaml(API別ファイルの記載例) +operation: + operationId: get-pets-pet-id + summary: Details for a pet + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + "200": + description: Expected response to a valid request + content: + application/json: + schema: + $ref: "#/components/responses/ResPetsPetIdGet" + examples: + ResExample1: + value: + $ref: "./examples/res_example1.yaml" + "404": + description: not found error + content: + application/json: + schema: + $ref: "../openapi.yaml#/components/schemas/Error" + "500": + description: unexpected error + content: + application/json: + schema: + $ref: "../openapi.yaml#/components/schemas/Error" +components: + schemas: + PetDetail: + type: object + properties: + breeder: + type: string + date_of_birth: + type: string + format: date + pedigree: + $ref: "#/components/schemas/Pedigree" + Pedigree: + required: + - registration_no + - date_of_registration + - pedigree_image + type: object + properties: + registration_no: + type: integer + format: int64 + date_of_registration: + type: string + format: date + pedigree_image: + type: string + responses: + ResPetsPetIdGet: + required: + - pet + - pet_detail + type: object + properties: + pet: + $ref: "../common/pet.yaml" + pet_detail: + $ref: "#/components/schemas/PetDetail" +``` - OpenAPI の使用用途により、分割ファイルを 1 つのファイルにまとめる必要がある場合には、例えば[swagger-cli](https://apitools.dev/swagger-cli/)を使用して以下コマンドを実行する。 - ```bash - swagger-cli bundle openapi.yaml --outfile openapi.gen.yaml --type yaml - ``` +```bash +swagger-cli bundle openapi.yaml --outfile openapi.gen.yaml --type yaml +``` -
- ファイルBundle後: openapi.gen.yaml - - ```yaml - openapi: 3.0.3 - info: - version: 1.0.0 - title: Swagger Petstore - license: - name: MIT - servers: - - url: "http://petstore.swagger.io/v1" +
+openapi.gen.yamlの詳細をみる + +```yaml +# openapi.gen.yaml(ファイルBundle後) +openapi: 3.0.3 +info: +version: 1.0.0 +title: Swagger Petstore +license: + name: MIT +servers: +- url: "http://petstore.swagger.io/v1" +tags: +- name: pets + description: Everything about your Pets +paths: +/pets: + get: + summary: List all pets + operationId: get-pets tags: - - name: pets - description: Everything about your Pets - paths: - /pets: - get: - summary: List all pets - operationId: get-pets - tags: - - pets - parameters: - - name: limit - in: query - description: How many items to return at one time (max 100) - required: false - schema: - type: integer - maximum: 100 - format: int32 - responses: - "200": - description: A paged array of pets - headers: - x-next: - description: A link to the next page of responses - schema: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + schema: + type: integer + maximum: 100 + format: int32 + responses: + "200": + description: A paged array of pets + headers: + x-next: + description: A link to the next page of responses + schema: + type: string + content: + application/json: + schema: + type: array + maxItems: 100 + items: + type: object + required: + - id + - name + - category + - age + - sex + properties: + id: + type: integer + format: int64 + name: type: string - content: - application/json: - schema: - type: array - maxItems: 100 - items: - type: object - required: - - id - - name - - category - - age - - sex - properties: - id: - type: integer - format: int64 - name: - type: string - maxLength: 50 - category: - type: string - maxLength: 10 - sub_category: - type: string - maxLength: 50 - age: - type: integer - format: int32 - sex: - type: string - maxLength: 6 - note: - type: string - maxLength: 200 - tag: - type: string - maxLength: 20 - examples: - ResExample1: - value: - - id: 10001 - name: ToyPoodle - category: dog - sub_category: ToyPoodle - age: 1 - sex: male - note: friendly - tag: dog10001 - - id: 10002 - name: Chihuahua - category: dog - sub_category: Chihuahua - age: 1 - sex: female - note: friendly - tag: dog10002 - - id: 10003 - name: Shiba - category: dog - sub_category: Shiba - age: 1 - sex: male - note: friendly - tag: dog10003 - - id: 10004 - name: MiniatureDachshund - category: dog - sub_category: MiniatureDachshund - age: 1 - sex: female - note: friendly - tag: dog10004 - ResExample2: - value: [] - "404": - description: not found error - content: - application/json: - schema: - type: object - required: - - code - - message - properties: - code: - type: integer - format: int32 - message: - type: string - "500": - description: unexpected error - content: - application/json: - schema: - $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" - post: - summary: Register a pet - operationId: post-pets - tags: - - pets - requestBody: - content: - application/json: - schema: - required: - - pet - type: object - properties: - pet: - $ref: "#/paths/~1pets/get/responses/200/content/application~1json/schema/items" - examples: - ReqExample1: - value: - pet: - id: 10005 - name: FrenchBulldog - category: dog - sub_category: FrenchBulldog - age: 1 - sex: male - note: friendly - tag: dog10005 - required: false - responses: - "201": - description: Null response - "404": - description: not found error - content: - application/json: - schema: - $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" - "500": - description: unexpected error - content: - application/json: - schema: - $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" - "/pets/{petId}": - get: - summary: Details for a pet - operationId: get-pets-pet-id - tags: - - pets - parameters: - - name: petId - in: path - required: true - description: The id of the pet to retrieve - schema: - type: string - responses: - "200": - description: Expected response to a valid request - content: - application/json: - schema: - required: - - pet - - pet_detail - type: object - properties: - pet: - $ref: "#/paths/~1pets/get/responses/200/content/application~1json/schema/items" - pet_detail: - type: object - properties: - breeder: - type: string - date_of_birth: - type: string - format: date - pedigree: - required: - - registration_no - - date_of_registration - - pedigree_image - type: object - properties: - registration_no: - type: integer - format: int64 - date_of_registration: - type: string - format: date - pedigree_image: - type: string - examples: - ResExample1: - value: - pet: - id: 10001 - name: ToyPoodle - category: dog - sub_category: ToyPoodle - age: 1 - sex: male - note: friendly - tag: dog10001 - pet_detail: - breeder: BreederName - date_of_birth: "2023-10-31" - pedigree: - registration_no: 11111111 - date_of_registration: "2023-10-31" - pedigree_image: 9j2wBDAA...8QAPxAAAQQABAMGBAYDAAEDAg - "404": - description: not found error - content: - application/json: - schema: - $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" - "500": - description: unexpected error - content: - application/json: - schema: - $ref: '#/paths/~1pets/get/responses/404/content/application~1json/schema' - components: - schemas: - PetDetail: + maxLength: 50 + category: + type: string + maxLength: 10 + sub_category: + type: string + maxLength: 50 + age: + type: integer + format: int32 + sex: + type: string + maxLength: 6 + note: + type: string + maxLength: 200 + tag: + type: string + maxLength: 20 + examples: + ResExample1: + value: + - id: 10001 + name: ToyPoodle + category: dog + sub_category: ToyPoodle + age: 1 + sex: male + note: friendly + tag: dog10001 + - id: 10002 + name: Chihuahua + category: dog + sub_category: Chihuahua + age: 1 + sex: female + note: friendly + tag: dog10002 + - id: 10003 + name: Shiba + category: dog + sub_category: Shiba + age: 1 + sex: male + note: friendly + tag: dog10003 + - id: 10004 + name: MiniatureDachshund + category: dog + sub_category: MiniatureDachshund + age: 1 + sex: female + note: friendly + tag: dog10004 + ResExample2: + value: [] + "404": + description: not found error + content: + application/json: + schema: type: object - properties: - breeder: - type: string - date_of_birth: - type: string - format: date - pedigree: - $ref: "#/components/schemas/Pedigree" - Pedigree: required: - - registration_no - - date_of_registration - - pedigree_image - type: object + - code + - message properties: - registration_no: + code: type: integer - format: int64 - date_of_registration: - type: string - format: date - pedigree_image: + format: int32 + message: type: string - responses: - ResPetsPetIdGet: - required: + "500": + description: unexpected error + content: + application/json: + schema: + $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" + post: + summary: Register a pet + operationId: post-pets + tags: + - pets + requestBody: + content: + application/json: + schema: + required: - pet - - pet_detail + type: object + properties: + pet: + $ref: "#/paths/~1pets/get/responses/200/content/application~1json/schema/items" + examples: + ReqExample1: + value: + pet: + id: 10005 + name: FrenchBulldog + category: dog + sub_category: FrenchBulldog + age: 1 + sex: male + note: friendly + tag: dog10005 + required: false + responses: + "201": + description: Null response + "404": + description: not found error + content: + application/json: + schema: + $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" + "500": + description: unexpected error + content: + application/json: + schema: + $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" +"/pets/{petId}": + get: + summary: Details for a pet + operationId: get-pets-pet-id + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + "200": + description: Expected response to a valid request + content: + application/json: + schema: + required: + - pet + - pet_detail type: object properties: pet: - $ref: "../common/pet.yaml" + $ref: "#/paths/~1pets/get/responses/200/content/application~1json/schema/items" pet_detail: - $ref: "#/components/schemas/PetDetail" - ``` + type: object + properties: + breeder: + type: string + date_of_birth: + type: string + format: date + pedigree: + required: + - registration_no + - date_of_registration + - pedigree_image + type: object + properties: + registration_no: + type: integer + format: int64 + date_of_registration: + type: string + format: date + pedigree_image: + type: string + examples: + ResExample1: + value: + pet: + id: 10001 + name: ToyPoodle + category: dog + sub_category: ToyPoodle + age: 1 + sex: male + note: friendly + tag: dog10001 + pet_detail: + breeder: BreederName + date_of_birth: "2023-10-31" + pedigree: + registration_no: 11111111 + date_of_registration: "2023-10-31" + pedigree_image: 9j2wBDAA...8QAPxAAAQQABAMGBAYDAAEDAg + "404": + description: not found error + content: + application/json: + schema: + $ref: "#/paths/~1pets/get/responses/404/content/application~1json/schema" + "500": + description: unexpected error + content: + application/json: + schema: + $ref: '#/paths/~1pets/get/responses/404/content/application~1json/schema' + components: + schemas: + PetDetail: + type: object + properties: + breeder: + type: string + date_of_birth: + type: string + format: date + pedigree: + $ref: "#/components/schemas/Pedigree" + Pedigree: + required: + - registration_no + - date_of_registration + - pedigree_image + type: object + properties: + registration_no: + type: integer + format: int64 + date_of_registration: + type: string + format: date + pedigree_image: + type: string + responses: + ResPetsPetIdGet: + required: + - pet + - pet_detail + type: object + properties: + pet: + $ref: "../common/pet.yaml" + pet_detail: + $ref: "#/components/schemas/PetDetail" +``` -
+
- OpenAPI の使用用途により、分割ファイルを1つのファイルにまとめる必要がある場合には、例えば[swagger-cli](https://apitools.dev/swagger-cli/)を使用して以下コマンドを実行する - ```bash - swagger-cli bundle openapi.yaml --outfile openapi.gen.yaml --type yaml - ``` - -
- - +```bash +swagger-cli bundle openapi.yaml --outfile openapi.gen.yaml --type yaml +``` --- diff --git a/documents/forOpenAPISpecification/reference/DB_OpenAPI_Mapping_Example.md b/documents/forOpenAPISpecification/reference/DB_OpenAPI_Mapping_Example.md deleted file mode 100644 index 2ad456c7..00000000 --- a/documents/forOpenAPISpecification/reference/DB_OpenAPI_Mapping_Example.md +++ /dev/null @@ -1,18 +0,0 @@ -# DB OpenAPI Mapping Example - -| データの種類 | DB 型 | DDL 定義 | OpenAPI
項目必須/非必須 | OpenAPI
Type/その他定義 | API
リクエスト/リスポンス | 備考 | -| :------------- | :--------------- | :----------------------- | :------------------------- | :--------------------------------------- | :-------------------------------------------------- | :---------------------------------------------------------- | -| 区分値 | varchar | NOT NULL, カラム名 <> '' | required | string/enum | 項目必須、空値は許容しない | | -| | | NOT NULL default '' | - | string/enum | 項目非必須、空値は undefined または空文字として定義 | 空値を空文字で定義する場合、enum に空文字を含む必要がある。 | -| フラグ | varchar | NOT NULL, カラム名 <> '' | required | string/enum | 項目必須、空値は許容しない | | -| | | NOT NULL default '' | - | string/enum | 項目非必須、空値は undefined または空文字として定義 | 空値を空文字で定義する場合、enum に空文字を含む必要がある。 | -| 数値 | integer | NOT NULL | required | integer | 項目必須、空値は許容しない | | -| | | - | nullable: true | integer | 項目非必須、空値は undefined または null として定義 | | -| 数値(精度有) | numeric | NOT NULL | required | string/正規表現 pattern | 項目必須、空値は許容しない | | -| | | - | nullable: true | string/正規表現 pattern | 項目非必須、空値は undefined または null として定義 | | -| 日付/時刻 | date / timestamp | NOT NULL | required | string/format 指定または正規表現 pattern | 項目必須、空値は許容しない | | -| | | - | nullable: true | string/format 指定または正規表現 pattern | 項目非必須、空値は undefined または null として定義 | | -| コード/番号 | varchar | NOT NULL, カラム名 <> '' | required | string/正規表現 pattern や桁数指定 | 項目必須、空値は許容しない | | -| | | NOT NULL default '' | - | string/正規表現 pattern や桁数指定 | 項目非必須、空値は undefined または空文字として定義 | | -| 名前 / メモ | varchar / text | NOT NULL, カラム名 <> '' | required | string/正規表現 pattern や桁数指定 | 項目必須、空値は許容しない | | -| | | NOT NULL default '' | - | string/正規表現 pattern や桁数指定 | 項目非必須、空値は undefined または空文字として定義 | | diff --git a/documents/forOpenAPISpecification/reference/divided_files_sample.zip b/documents/forOpenAPISpecification/reference/divided_files_sample.zip deleted file mode 100644 index 4e07320c18794517af7fe4fa504f9aed392ca4c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7022 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