Internship GPT

Internship GPT · Actions GPT

File Upload API

This API accepts file information, uploads it to a firebase database, and returns the link where a user can view the file.

  • POST /Uploads file information to the database.
Schéma original API
{
  "openapi": "3.0.0",
  "info": {
    "title": "File Upload API",
    "description": "This API accepts file information, uploads it to a firebase database, and returns the link where a user can view the file.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://us-central1-test-e633b.cloudfunctions.net/gpt-file-upload",
      "description": "Main API server"
    }
  ],
  "paths": {
    "/": {
      "post": {
        "operationId": "uploadFile",
        "summary": "Uploads file information to the database.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "resume",
                      "cover_letter"
                    ],
                    "description": "Type of the file being uploaded."
                  },
                  "name": {
                    "type": "string",
                    "description": "Description of the file."
                  },
                  "tailored": {
                    "type": "boolean",
                    "description": "Indicates if the file is tailored. If it's a cover_letter, it should always be true. If a regular resume, make this false. If it's a resume based off a job description, make it true."
                  },
                  "fileData": {
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/ResumeData"
                      },
                      {
                        "$ref": "#/components/schemas/CoverLetterData"
                      }
                    ],
                    "discriminator": {
                      "propertyName": "type",
                      "mapping": {
                        "resume": "#/components/schemas/ResumeData",
                        "cover_letter": "#/components/schemas/CoverLetterData"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "File information can now be viewed on OfferPilot",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fileUrl": {
                      "type": "string",
                      "description": "The url where a user can view the compiled, uploaded file."
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ResumeData": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "socials": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "objective": {
            "type": "string",
            "description": "A short, about 15 word statement about what job you want and who you are."
          },
          "education": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Education"
            }
          },
          "work_experiences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkExperience"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Project"
            }
          },
          "extras": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Extra"
            }
          }
        }
      },
      "CoverLetterData": {
        "type": "object",
        "required": [
          "name",
          "letter"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "letter": {
            "type": "string",
            "description": "A ~260 word string letter that is a cover letter conveying why someone should land a position."
          }
        }
      },
      "Education": {
        "type": "object",
        "properties": {
          "school_name": {
            "type": "string"
          },
          "date_info": {
            "type": "string"
          },
          "degree": {
            "type": "string"
          },
          "major": {
            "type": "string"
          },
          "gpa": {
            "type": "string"
          },
          "location_info": {
            "type": "string"
          },
          "relevant_coursework": {
            "type": "string"
          }
        }
      },
      "WorkExperience": {
        "type": "object",
        "properties": {
          "employer": {
            "type": "string"
          },
          "job_title": {
            "type": "string"
          },
          "location_info": {
            "type": "string"
          },
          "date_info": {
            "type": "string"
          },
          "bullets": {
            "type": "array",
            "description": "list with 2-3 elements which are each an about 20 word short sentence that starts with a past tense action verb about the described work experience; the bullet points should be of expert level quality and use strong Action Verbs and highlight the skills that are mentioned.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Project": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "date_info": {
            "type": "string"
          },
          "bullets": {
            "type": "array",
            "description": "list with 2-3 elements which are each an about 20 word short sentence that starts with a past tense action verb about the described project; the bullet points should be of expert level quality and use strong Action Verbs and highlight the skills that are mentioned",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Extra": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "info": {
            "type": "string"
          }
        }
      }
    }
  }
}