ChatGPT netlify drop plugin, can custom GPTs using actions replicate this?

Hello,

I’ve been a huge fan of the netlify drop plugin in chatGPT. Now that custom GPTs are available I have had a lot of fun building with them!
https://mindgoblinstudios.com/
https://gptavern.mindgoblinstudios.com/

Unfortunately, it appears chatGPT plugins no longer work with these new custom GPTs, since plugins seem to be deprecated in favor of actions.

Is there a way I can replicate the Netlify drop chatGPT plugin inside this new GPT experience?

I have attempted to setup my own OpenAPI schema, but I am having difficulty getting working.
I would love to add it to my custom gpt: Grimoire
ChatGPT - Grimoire.
Over 30,000 conversations in the first week. I would love to send you some new customers!

Here is the openAPI schema I’ve setup so far

openapi: 3.0.0
info:
  title: Netlify Deployment API
  version: 1.0.0
  description: API endpoints for managing deployments on Netlify.
servers:
  - url: https://api.netlify.com/api/v1
    description: Netlify API base URL
paths:
  /sites/{site_id}/deploys:
    post:
      summary: Create a New Deploy for a Site
      operationId: createSiteDeploy
      parameters:
        - name: site_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                files:
                  type: object
                functions:
                  type: object
                async:
                  type: boolean
      responses:
        '200':
          description: Deploy created successfully.
        '400':
          description: Invalid request.

  /deploys/{deploy_id}/files/{file_path}:
    put:
      summary: Upload a File to a Deploy
      operationId: uploadFileToDeploy
      parameters:
        - name: deploy_id
          in: path
          required: true
          schema:
            type: string
        - name: file_path
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: File uploaded successfully.
        '400':
          description: Invalid request.

  /deploys/{deploy_id}/functions/{function_name}:
    put:
      summary: Upload a Function to a Deploy
      operationId: uploadFunctionToDeploy
      parameters:
        - name: deploy_id
          in: path
          required: true
          schema:
            type: string
        - name: function_name
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Function uploaded successfully.
        '400':
          description: Invalid request.

  /sites/{site_id}/deploys/{deploy_id}:
    get:
      summary: Get Deploy Details
      operationId: getDeployDetails
      parameters:
        - name: site_id
          in: path
          required: true
          schema:
            type: string
        - name: deploy_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Deploy details retrieved successfully.
        '404':
          description: Deploy not found.

Thanks, Nick

Hey @NickMindGoblin,

Based on what we checked with the devs, it’s actually still possible to use the plugin. The steps:

We’ll release the functionality as a GPT soon enough, so till then maybe this would work?

Yes, this is a new feature.
I am asking for new functionality.

As the old plugin, does not work in the newly launched custom GPTs / my GPTs.

See screenshots

I want to add a similar deploy to netlify functionality to my coding bot
Grimoire:
https://chat.openai.com/g/g-n7Rs0IK86-grimoire

We are the #1 customGPT in the world.
With over 35,000 chats in the first week since launch

I have been able to get OAuth and create site working,
but so far haven’t been able to add any new files to my deployment.

Any ideas on how to get this working?
It seems like the netlify drop plugin might be using a simpler api since it somehow does it in 1 call??
And also allows un-authorized users to create temporal deploys?

Is that available for use? I don’t see any mention of it in the docs.

Would it be possible to be put in touch with the team that made the plugin? That might be easier, this is a fairly new and weird request.

Appreciate all the help!

Thanks!

Here is my OpenAPI action schema so far:


openapi: 3.0.0
info:
  title: Netlify API
  version: 1.0.0
servers:
  - url: 'https://api.netlify.com/api/v1'
paths:
  /sites:
    post:
      summary: Create a new site
      operationId: createSite
      tags:
        - site
      requestBody:
        description: Details of the site to be created
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                custom_domain:
                  type: string
                password:
                  type: string
                force_ssl:
                  type: boolean
      responses:
        '201':
          description: Site created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
        '400':
          description: Bad request

  /sites/{site_id}/deploys:
    post:
      summary: Create a deployment for a site
      operationId: createSiteDeploy
      tags:
        - site
      parameters:
        - name: site_id
          in: path
          required: true
          description: The ID of the site
          schema:
            type: string
      requestBody:
        description: Deployment details
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                files:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Deployment initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deploy'

  /deploys/{deploy_id}/files:
    post:
      summary: Upload a file to a deployment
      operationId: uploadFileToDeploy
      tags:
        - deploy
      parameters:
        - name: deploy_id
          in: path
          required: true
          description: The ID of the deploy
          schema:
            type: string
      requestBody:
        description: File to be uploaded
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
        '400':
          description: Bad request

components:
  schemas:
    Site:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        url:
          type: string
    Deploy:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
    deployFiles: 
      type: object
      properties: 
        files: 
          type: object
        draft: 
          type: boolean
        async: 
          type: boolean
        functions: 
          type: object
        function_schedules: 
          type: array
          items: 
            $ref: "#/components/schemas/functionSchedule"
        functions_config: 
          type: object
          additionalProperties: 
            $ref: "#/components/schemas/functionConfig"
        branch: 
          type: string
        framework: 
          type: string
        framework_version: 
          type: string
    file: 
      type: object
      properties: 
        id: 
          type: string
        path: 
          type: string
        sha: 
          type: string
        mime_type: 
          type: string
        size: 
          type: integer
          format: int64

@hrishikesh Any updates?

Yes, it does that and we specifically don’t want to share the API for public use.

The above answer came from the team itself.

Regarding adding any new files to deploy, I’m not sure how that’s any different than using the API directly: Get started with the Netlify API | Netlify Docs

“Yes, it does that and we specifically don’t want to share the API for public use.”

Thank you for checking. Can we make it public?
I would like to use it.

I already have an OAuth application setup, so if the un-auth’ed portion is the blocker, can we simply make the simpler api available?

Currently openAi custom GPT actions don’t support uploading file binary data via customGPT actions. Which makes it impossible to use the 2 publicly available file upload APIs, since they require either a Zip file data binary, or uploading files one at a time using binary data.

Options to solve:

  1. Change the public apis to support a different type of file upload compatible with openAi 's actions
  2. Expose the existing netlify drop api
  3. Expose the existing netlify drop api, but with proper auth.

What can you do to help me solve this?

We’re already working on better plugins to integrate with AI, thus the current solution might soon be replaced and we’ve been told not to share the endpoint publicly. I’m afraid, there cannot be a solution here from our end.

Regarding adding any new files to deploy, I’m not sure how that’s any different than using the API directly: Get started with the Netlify API | Netlify Docs

This is what I am attempting to do… I am asking for help using the API via a customGPT, using an OpenAPI schema. Which I have pasted above twice now.

If you don’t want to use options 2 or 3,
How can me make option 1 work?

What can you do to help me solve this?

You still haven’t answered my original question and its been almost 3 weeks.

So let me try this again.

A. Is there a way I can replicate something similar to netlify drop in this NEW form of chatGPT, using an OpenAPI schema.
I have pasted 2 examples in the forum already

b. I have tried the existing netlify api, have setup an authenticated version using OAuth2 and an OAuth integration,
and have successfully started a deploy and uploaded a file digest.
However I am not able to actually upload the file to complete the deploy.

c. How can I successfully upload a file?
c. How can I successfully upload a file?
c. How can I successfully upload a file?

Your endpoints require binary data streams which it appears aren’t supported by chatGPT. So what can I do to make this work?

Hi @NickMindGoblin,

Sorry, but we don’t plan on exposing this endpoint to third-party developers at this time.

If you’d like to use an early version of our GPT, you can try it out here. But we’d like to keep the OpenAPI spec closed for now.

We have now opened up public access to this endpoint. Read more details here: Deploy to Netlify from your own GPT

1 Like