From 7519977d773406c4867b4d815a7d2893ee0b82fa Mon Sep 17 00:00:00 2001
From: zhang-openai <zhang@openai.com>
Date: Fri, 19 Jul 2024 15:38:04 -0700
Subject: [PATCH] f

---
 openapi.yaml | 434 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 424 insertions(+), 10 deletions(-)

diff --git a/openapi.yaml b/openapi.yaml
index 602fdab6..1c35bc1a 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -29,6 +29,8 @@ tags:
       description: Create large batches of API requests to run asynchronously.
     - name: Files
       description: Files are used to upload documents that can be used with features like Assistants and Fine-tuning.
+    - name: Uploads
+      description: Use Uploads to upload large files in multiple parts.
     - name: Images
       description: Given a prompt and/or an input image, the model will generate a new image.
     - name: Models
@@ -117,7 +119,7 @@ paths:
                             "id": "chatcmpl-123",
                             "object": "chat.completion",
                             "created": 1677652288,
-                            "model": "gpt-3.5-turbo-0125",
+                            "model": "gpt-4o-mini",
                             "system_fingerprint": "fp_44709d6fcb",
                             "choices": [{
                               "index": 0,
@@ -214,7 +216,7 @@ paths:
                             "id": "chatcmpl-123",
                             "object": "chat.completion",
                             "created": 1677652288,
-                            "model": "gpt-3.5-turbo-0125",
+                            "model": "gpt-4o-mini",
                             "system_fingerprint": "fp_44709d6fcb",
                             "choices": [{
                               "index": 0,
@@ -289,13 +291,13 @@ paths:
 
                               main();
                       response: &chat_completion_chunk_example |
-                          {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
+                          {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
 
-                          {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}
+                          {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}
 
                           ....
 
-                          {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
+                          {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
                     - title: Functions
                       request:
                           curl: |
@@ -412,7 +414,7 @@ paths:
                             "id": "chatcmpl-abc123",
                             "object": "chat.completion",
                             "created": 1699896916,
-                            "model": "gpt-3.5-turbo-0125",
+                            "model": "gpt-4o-mini",
                             "choices": [
                               {
                                 "index": 0,
@@ -494,7 +496,7 @@ paths:
                             "id": "chatcmpl-123",
                             "object": "chat.completion",
                             "created": 1702685778,
-                            "model": "gpt-3.5-turbo-0125",
+                            "model": "gpt-4o-mini",
                             "choices": [
                               {
                                 "index": 0,
@@ -1721,7 +1723,219 @@ paths:
                             }
 
                             main();
+    /uploads:
+        post:
+            operationId: createUpload
+            tags:
+                - Uploads
+            summary: |
+                Creates an intermediate [Upload](/docs/api-reference/uploads/object) object that you can add [Parts](/docs/api-reference/uploads/part-object) to. Currently, an Upload can accept at most 8 GB in total and expires after an hour after you create it.
+                
+                Once you complete the Upload, we will create a [File](/docs/api-reference/files/object) object that contains all the parts you uploaded. This File is usable in the rest of our platform as a regular File object.
+                
+                For certain `purpose`s, the correct `mime_type` must be specified. Please refer to documentation for the supported MIME types for your use case:
+                - [Assistants](/docs/assistants/tools/file-search/supported-files)
+                
+                For guidance on the proper filename extensions for each purpose, please follow the documentation on [creating a File](/docs/api-reference/files/create).
+            requestBody:
+                required: true
+                content:
+                    application/json:
+                        schema:
+                            $ref: "#/components/schemas/CreateUploadRequest"
+            responses:
+                "200":
+                    description: OK
+                    content:
+                        application/json:
+                            schema:
+                                $ref: "#/components/schemas/Upload"
+            x-oaiMeta:
+                name: Create upload
+                group: uploads
+                returns: The [Upload](/docs/api-reference/uploads/object) object with status `pending`.
+                examples:
+                    request:
+                        curl: |
+                            curl https://api.openai.com/v1/uploads \
+                              -H "Authorization: Bearer $OPENAI_API_KEY" \
+                              -d '{
+                                "purpose": "fine-tune",
+                                "filename": "training_examples.jsonl",
+                                "bytes": 2147483648,
+                                "mime_type": "text/jsonl"
+                              }'
+                    response: |
+                        {
+                          "id": "upload_abc123",
+                          "object": "upload",
+                          "bytes": 2147483648,
+                          "created_at": 1719184911,
+                          "filename": "training_examples.jsonl",
+                          "purpose": "fine-tune",
+                          "status": "pending",
+                          "expires_at": 1719127296
+                        }
 
+    /uploads/{upload_id}/parts:
+        post:
+            operationId: addUploadPart
+            tags:
+                - Uploads
+            summary: |
+                Adds a [Part](/docs/api-reference/uploads/part-object) to an [Upload](/docs/api-reference/uploads/object) object. A Part represents a chunk of bytes from the file you are trying to upload. 
+
+                Each Part can be at most 64 MB, and you can add Parts until you hit the Upload maximum of 8 GB.
+
+                It is possible to add multiple Parts in parallel. You can decide the intended order of the Parts when you [complete the Upload](/docs/api-reference/uploads/complete).
+            parameters:
+                - in: path
+                  name: upload_id
+                  required: true
+                  schema:
+                      type: string
+                      example: upload_abc123
+                  description: |
+                      The ID of the Upload.
+            requestBody:
+                required: true
+                content:
+                    multipart/form-data:
+                        schema:
+                            $ref: "#/components/schemas/AddUploadPartRequest"
+            responses:
+                "200":
+                    description: OK
+                    content:
+                        application/json:
+                            schema:
+                                $ref: "#/components/schemas/UploadPart"
+            x-oaiMeta:
+                name: Add upload part
+                group: uploads
+                returns: The upload [Part](/docs/api-reference/uploads/part-object) object.
+                examples:
+                    request:
+                        curl: |
+                            curl https://api.openai.com/v1/uploads/upload_abc123/parts
+                              -F data="aHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS91cGxvYWRz..."
+                    response: |
+                        {
+                          "id": "part_def456",
+                          "object": "upload.part",
+                          "created_at": 1719185911,
+                          "upload_id": "upload_abc123"
+                        }
+
+    /uploads/{upload_id}/complete:
+        post:
+            operationId: completeUpload
+            tags:
+                - Uploads
+            summary: |
+                Completes the [Upload](/docs/api-reference/uploads/object). 
+                
+                Within the returned Upload object, there is a nested [File](/docs/api-reference/files/object) object that is ready to use in the rest of the platform.
+
+                You can specify the order of the Parts by passing in an ordered list of the Part IDs.
+
+                The number of bytes uploaded upon completion must match the number of bytes initially specified when creating the Upload object. No Parts may be added after an Upload is completed.
+            parameters:
+                - in: path
+                  name: upload_id
+                  required: true
+                  schema:
+                      type: string
+                      example: upload_abc123
+                  description: |
+                      The ID of the Upload.
+            requestBody:
+                required: true
+                content:
+                    application/json:
+                        schema:
+                            $ref: "#/components/schemas/CompleteUploadRequest"
+            responses:
+                "200":
+                    description: OK
+                    content:
+                        application/json:
+                            schema:
+                                $ref: "#/components/schemas/Upload"
+            x-oaiMeta:
+                name: Complete upload
+                group: uploads
+                returns: The [Upload](/docs/api-reference/uploads/object) object with status `completed` with an additional `file` property containing the created usable File object.
+                examples:
+                    request:
+                        curl: |
+                            curl https://api.openai.com/v1/uploads/upload_abc123/complete
+                              -d '{
+                                "part_ids": ["part_def456", "part_ghi789"]
+                              }'
+                    response: |
+                        {
+                          "id": "upload_abc123",
+                          "object": "upload",
+                          "bytes": 2147483648,
+                          "created_at": 1719184911,
+                          "filename": "training_examples.jsonl",
+                          "purpose": "fine-tune",
+                          "status": "completed",
+                          "expires_at": 1719127296,
+                          "file": {
+                            "id": "file-xyz321",
+                            "object": "file",
+                            "bytes": 2147483648,
+                            "created_at": 1719186911,
+                            "filename": "training_examples.jsonl",
+                            "purpose": "fine-tune",
+                          }
+                        }
+
+    /uploads/{upload_id}/cancel:
+        post:
+            operationId: cancelUpload
+            tags:
+                - Uploads
+            summary: |
+                Cancels the Upload. No Parts may be added after an Upload is cancelled.
+            parameters:
+                - in: path
+                  name: upload_id
+                  required: true
+                  schema:
+                      type: string
+                      example: upload_abc123
+                  description: |
+                      The ID of the Upload.
+            responses:
+                "200":
+                    description: OK
+                    content:
+                        application/json:
+                            schema:
+                                $ref: "#/components/schemas/Upload"
+            x-oaiMeta:
+                name: Cancel upload
+                group: uploads
+                returns: The [Upload](/docs/api-reference/uploads/object) object with status `cancelled`.
+                examples:
+                    request:
+                        curl: |
+                            curl https://api.openai.com/v1/uploads/upload_abc123/cancel
+                    response: |
+                        {
+                          "id": "upload_abc123",
+                          "object": "upload",
+                          "bytes": 2147483648,
+                          "created_at": 1719184911,
+                          "filename": "training_examples.jsonl",
+                          "purpose": "fine-tune",
+                          "status": "cancelled",
+                          "expires_at": 1719127296
+                        }
+  
     /fine_tuning/jobs:
         post:
             operationId: createFineTuningJob
@@ -3680,7 +3894,7 @@ paths:
                 name: Retrieve message
                 group: threads
                 beta: true
-                returns: The [message](/docs/api-reference/threads/messages/object) object matching the specified ID.
+                returns: The [message](/docs/api-reference/messages/object) object matching the specified ID.
                 examples:
                     request:
                         curl: |
@@ -3768,7 +3982,7 @@ paths:
                 name: Modify message
                 group: threads
                 beta: true
-                returns: The modified [message](/docs/api-reference/threads/messages/object) object.
+                returns: The modified [message](/docs/api-reference/messages/object) object.
                 examples:
                     request:
                         curl: |
@@ -7457,7 +7671,7 @@ components:
                           description: The text contents of the message.
                           title: Text content
                         - type: array
-                          description: An array of content parts with a defined type, each can be of type `text` or `image_url` when passing in images. You can pass multiple images by adding multiple `image_url` content parts. Image input is only supported when using the `gpt-4-visual-preview` model.
+                          description: An array of content parts with a defined type, each can be of type `text` or `image_url` when passing in images. You can pass multiple images by adding multiple `image_url` content parts. Image input is only supported when using the `gpt-4o` model.
                           title: Array of content parts
                           items:
                               $ref: "#/components/schemas/ChatCompletionRequestMessageContentPart"
@@ -7827,6 +8041,8 @@ components:
                               [
                                   "gpt-4o",
                                   "gpt-4o-2024-05-13",
+                                  "gpt-4o-mini",
+                                  "gpt-4o-mini-2024-07-18",
                                   "gpt-4-turbo",
                                   "gpt-4-turbo-2024-04-09",
                                   "gpt-4-0125-preview",
@@ -7929,7 +8145,12 @@ components:
                   description: |
                       Specifies the latency tier to use for processing the request. This parameter is relevant for customers subscribed to the scale tier service:
                         - If set to 'auto', the system will utilize scale tier credits until they are exhausted.
+<<<<<<< Updated upstream
                         - If set to 'default', the request will be processed in the shared cluster.
+=======
+                        - If set to 'default', the request will be processed using the default service tier with a lower uptime SLA and no latency guarentee.
+                        - When not set, the default behavior is 'auto'.
+>>>>>>> Stashed changes
 
                         When this parameter is set, the response body will include the `service_tier` utilized.
                   type: string
@@ -8679,6 +8900,70 @@ components:
                 - object
                 - deleted
 
+        CreateUploadRequest:
+            type: object
+            additionalProperties: false
+            properties:
+                filename:
+                    description: |
+                        The name of the file to upload.
+                    type: string
+                purpose:
+                    description: |
+                        The intended purpose of the uploaded file.
+            
+                        See the [documentation on File purposes](/docs/api-reference/files/create#files-create-purpose).
+                    type: string
+                    enum: ["assistants", "batch", "fine-tune", "vision"]
+                bytes:
+                    description: |
+                        The number of bytes in the file you are uploading.
+                    type: integer
+                mime_type:
+                    description: |
+                        The MIME type of the file.
+                        
+                        This must fall within the supported MIME types for your file purpose. See the supported MIME types for assistants and vision.
+                    type: string
+            required:
+                - filename
+                - purpose
+                - bytes
+                - mime_type
+
+        AddUploadPartRequest:
+            type: object
+            additionalProperties: false
+            properties:
+                data:
+                    description: |
+                        The chunk of bytes for this Part.
+                    type: string
+                    format: binary
+            required:
+                - data
+
+        CompleteUploadRequest:
+            type: object
+            additionalProperties: false
+            properties:
+                part_ids:
+                    type: array
+                    description: |
+                        The ordered list of Part IDs.
+                    items:
+                        type: string
+                md5:
+                    description: |
+                        The optional md5 checksum for the file contents to verify if the bytes uploaded matches what you expect.
+                    type: string
+            required:
+                - part_ids
+
+        CancelUploadRequest:
+            type: object
+            additionalProperties: false
+
         CreateFineTuningJobRequest:
             type: object
             properties:
@@ -9331,6 +9616,105 @@ components:
                       "filename": "salesOverview.pdf",
                       "purpose": "assistants",
                     }
+        Upload:
+            type: object
+            title: Upload
+            description: |
+                The Upload object can accept byte chunks in the form of Parts.
+            properties:
+                id:
+                    type: string
+                    description: The Upload unique identifier, which can be referenced in API endpoints.
+                created_at:
+                    type: integer
+                    description: The Unix timestamp (in seconds) for when the Upload was created.
+                filename:
+                    type: string
+                    description: The name of the file to be uploaded.
+                bytes:
+                    type: integer
+                    description: The intended number of bytes to be uploaded.
+                purpose:
+                    type: string
+                    description: The intended purpose of the file. [Please refer here](/docs/api-reference/files/object#files/object-purpose) for acceptable values.
+                status:
+                    type: string
+                    description: The status of the Upload.
+                    enum: ["pending", "completed", "cancelled", "expired"]
+                expires_at:
+                    type: integer
+                    description: The Unix timestamp (in seconds) for when the Upload was created.
+                object:
+                    type: string
+                    description: The object type, which is always "upload".
+                    enum: [upload]
+                file: 
+                    $ref: "#/components/schemas/OpenAIFile"
+                    nullable: true
+                    description: The ready File object after the Upload is completed.
+            required:
+                - bytes
+                - created_at
+                - expires_at
+                - filename
+                - id
+                - purpose
+                - status
+                - step_number
+            x-oaiMeta:
+                name: The upload object
+                example: |
+                    {
+                      "id": "upload_abc123",
+                      "object": "upload",
+                      "bytes": 2147483648,
+                      "created_at": 1719184911,
+                      "filename": "training_examples.jsonl",
+                      "purpose": "fine-tune",
+                      "status": "completed",
+                      "expires_at": 1719127296,
+                      "file": {
+                        "id": "file-xyz321",
+                        "object": "file",
+                        "bytes": 2147483648,
+                        "created_at": 1719186911,
+                        "filename": "training_examples.jsonl",
+                        "purpose": "fine-tune",
+                      }
+                    }
+        UploadPart:
+            type: object
+            title: UploadPart
+            description: |
+                The upload Part represents a chunk of bytes we can add to an Upload object.
+            properties:
+                id:
+                    type: string
+                    description: The upload Part unique identifier, which can be referenced in API endpoints.
+                created_at:
+                    type: integer
+                    description: The Unix timestamp (in seconds) for when the Part was created.
+                upload_id:
+                    type: string
+                    description: The ID of the Upload object that this Part was added to.
+                object:
+                    type: string
+                    description: The object type, which is always `upload.part`.
+                    enum: ['upload.part']
+            required:
+                - created_at
+                - id
+                - object
+                - upload_id
+            x-oaiMeta:
+                name: The upload part object
+                example: |
+                    {
+                        "id": "part_def456",
+                        "object": "upload.part",
+                        "created_at": 1719186911,
+                        "upload_id": "upload_abc123"
+                    }
         Embedding:
             type: object
             description: |
@@ -9957,6 +10341,8 @@ components:
                               [
                                   "gpt-4o",
                                   "gpt-4o-2024-05-13",
+                                  "gpt-4o-mini",
+                                  "gpt-4o-mini-2024-07-18",
                                   "gpt-4-turbo",
                                   "gpt-4-turbo-2024-04-09",
                                   "gpt-4-0125-preview",
@@ -10618,6 +11004,8 @@ components:
                               [
                                   "gpt-4o",
                                   "gpt-4o-2024-05-13",
+                                  "gpt-4o-mini",
+                                  "gpt-4o-mini-2024-07-18",
                                   "gpt-4-turbo",
                                   "gpt-4-turbo-2024-04-09",
                                   "gpt-4-0125-preview",
@@ -10826,6 +11214,8 @@ components:
                               [
                                   "gpt-4o",
                                   "gpt-4o-2024-05-13",
+                                  "gpt-4o-mini",
+                                  "gpt-4o-mini-2024-07-18",
                                   "gpt-4-turbo",
                                   "gpt-4-turbo-2024-04-09",
                                   "gpt-4-0125-preview",
@@ -13576,6 +13966,30 @@ x-oaiMeta:
               - type: object
                 key: OpenAIFile
                 path: object
+        - id: uploads
+          title: Uploads
+          description: |
+              Allows you to upload large files in multiple parts.
+          navigationGroup: endpoints
+          sections:
+              - type: endpoint
+                key: createUpload
+                path: create
+              - type: endpoint
+                key: addUploadPart
+                path: add-part
+              - type: endpoint
+                key: completeUpload
+                path: complete
+              - type: endpoint
+                key: cancelUpload
+                path: cancel
+              - type: object
+                key: Upload
+                path: object
+              - type: object
+                key: UploadPart
+                path: part-object
         - id: images
           title: Images
           description: |
