A Netlify OpenAPI client that works in the browser and Node.js.
Usage
import { NetlifyAPI } from 'netlify'
const client = new NetlifyAPI('1234myAccessToken')
const sites = await client.listSites()
Using OpenAPI operations
import { NetlifyAPI } from 'netlify'
const client = new NetlifyAPI('1234myAccessToken')
const sites = await client.listSites()
const site = await client.createSite({
body: {
name: `my-awesome-site`,
},
})
await client.deleteSite({ site_id: siteId })
API
client = new NetlifyAPI([accessToken], [opts])
Create a new instance of the Netlify API client with the provided accessToken
.
accessToken
is optional. Without it, you can't make authorized requests.
opts
includes:
const opts = {
userAgent: 'netlify/js-client',
scheme: 'https',
host: 'api.netlify.com',
pathPrefix: '/api/v1',
accessToken: '1234myAccessToken',
agent: undefined,
globalParams: {},
}
client.accessToken
A setter/getter that returns the accessToken
that the client is configured to use. You can set this after the class is
instantiated, and all subsequent calls will use the newly set accessToken
.
client.basePath
A getter that returns the formatted base URL of the endpoint the client is configured to use.
OpenAPI Client methods
The client is dynamically generated from the OpenAPI definition file. Each method
is is named after the operationId
name of each operation. To see a list of available operations, please see the
OpenAPI website.
Every OpenAPI operation has the following signature:
response = await client.operationId([params], [opts])
Performs a call to the given endpoint corresponding with the operationId
. Returns a promise resolved with the body of
the response, or rejected with an error with the details about the request attached. Rejects if the status
> 400.
params
is an object that includes any of the required or optional endpoint parameters.params.body
should be an object which gets serialized to JSON automatically. Any object can live here but refer to
the OpenAPI specification for allowed fields in a particular request body. It can also be a function returning an
object.- If the endpoint accepts
binary
, params.body
can be a Node.js readable stream or a function returning one (e.g.
() => fs.createReadStream('./foo')
). Using a function is recommended.
const params = {
any_param_needed: anyParamNeeded,
paramsCanAlsoBeCamelCase,
body: {
an: 'arbitrary js object',
},
}
Optional opts
can include any property you want passed to node-fetch
. The
headers
property is merged with some defaultHeaders
.
const opts = {
headers: {
'User-agent': 'netlify-js-client',
accept: 'application/json',
},
}
All operations are conveniently consumed with async/await:
try {
const siteDeploy = await client.getSiteDeploy({
siteId: '1234abcd',
deploy_id: '4567',
})
} catch {
}
If the response includes json
in the contentType
header, fetch will deserialize the JSON body. Otherwise the text
of the response is returned.
API Flow Methods
Some methods have been added in addition to the open API operations that make certain actions simpler to perform.
accessToken = await client.getAccessToken(ticket, [opts])
Pass in a ticket
and get back an accessToken
. Call this with the
response from a client.createTicket({ client_id })
call. Automatically sets the accessToken
to this.accessToken
and returns accessToken
for the consumer to save for later.
Optional opts
include:
const opts = {
poll: 1000,
timeout: 3.6e6,
}
See the authenticating docs for more context.
import open from 'open'
const ticket = await client.createTicket({ clientId: CLIENT_ID })
await open(`https://app.netlify.com/authorize?response_type=ticket&ticket=${ticket.id}`)
const accessToken = await client.getAccessToken(ticket)
Proxy support
Node.js only: If this client is used behind a corporate proxy, you can pass an HttpsProxyAgent
or any other
http.Agent
that can handle your situation as agent
option:
import HttpsProxyAgent from 'https-proxy-agent'
const proxyUri = 'http(s)://[user:password@]proxyhost:port'
const agent = new HttpsProxyAgent(proxyUri)
const client = new NetlifyAPI('1234myAccessToken', { agent })
Site deployment
Support for site deployment has been removed from this package in version 7.0.0. You should consider using the
deploy
command of Netlify CLI.
Contributing
See CONTRIBUTING.md for more info on how to make contributions to this project.
License
MIT. See LICENSE for more details.