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
https://chat.openai.com/g/g-n7Rs0IK86-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
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:
- Change the public apis to support a different type of file upload compatible with openAi 's actions
- Expose the existing netlify drop api
- Expose the existing netlify drop api, but with proper auth.
What can you do to help me solve this?