This repository has been archived by the owner on Sep 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 652
REST API
amitapl edited this page Nov 5, 2014
·
47 revisions
This API is accessed the same way as the git endpoint. e.g. if your git URL is https://yoursite.scm.azurewebsites.net/yoursite.git
, then the API to get the list of deployments will be https://yoursite.scm.azurewebsites.net/deployments
.
The credentials you use are the same as when you git push. See Deployment-credentials for more details.
Note: in older builds, use /live/scm
instead of /api/scm
GET /api/scm/info
Get information about the repository
POST /api/scm/clean
Clean the repository, using 'git clean -xdff'
DELETE /api/scm
Delete the repository
POST /api/command
Executes an arbitrary command line and return its output
The JSON body of the post should look like this, passing the command and the folder it should run in:
{
"command": 'echo Hello World',
"dir": 'site\\repository'
}
The VFS API is based on https://github.com/c9/vfs-http-adapter. Paths with trailing slashes are treated as directories.
GET /api/vfs/{path}
Gets a file at path
GET /api/vfs/{path}/
Lists files at directory specified by path.
PUT /api/vfs/{path}
Puts a file at path.
PUT /api/vfs/{path}/
Creates a directory at path
DELETE /api/vfs/{path}
Delete the file at path.
The Zip API allows downloading folders as zip files, or expanding zip files into folders.
GET /api/zip/{path}
Zip up and download the specified folder. The zip doesn't include the top folder itself.
PUT /api/zip/{path}
Upload a zip file which gets expanded into the specified folder. Existing files are not deleted
unless they need to be overwritten by files in the zip.
GET /api/deployments
Get the list of all deployments
GET /api/deployments/{id}
Get a deployment
PUT /api/deployments/{id}
Deploy a previous deployment
DELETE /api/deployments/{id}
Delete a deployment
GET /api/deployments/{id}/log
Get the list of log entries for a deployment
GET /api/deployments/{id}/log/{logId}
Get the list of log entry details for a log entry
POST /deploy
Payload: { format: 'basic', url: 'https://github.com/SomeOrg/SomeRepo.git' }
Trigger a new deployment from that repository
POST /deploy
Payload: { format: 'basic', url: 'https://github.com/SomeOrg/SomeRepo.git#<commit_sha>' }
Trigger a new deployment from that repository for certain commit.
PUT /api/sshkey
Set the private key. The supported key format is privacy enhanced mail (PEM)
GET /api/sshkey
Get the public key. Optional: ?ensurePublicKey=1 to generate if none exist.
GET /api/environment
Get the Kudu version
POST /api/settings
Create or change one or more settings
Sample body:
{
"foo": "hello",
"bar": "bye"
}
GET /api/settings
Get the list of all settings
GET /api/settings/{key}
Get the value of a setting
DELETE /api/settings/{key}
Delete a setting
GET /api/dump
Get all the diagnostic logs as a zip file
POST /api/diagnostics/settings
Create or change a setting
GET /api/diagnostics/settings
Get the list of all settings
GET /api/diagnostics/settings/{key}
Get the value of a setting
DELETE /api/diagnostics/settings/{key}
Delete a setting
Sample of available settings.
{
"AzureDriveEnabled": false(|true),
"AzureDriveTraceLevel": "Error(|Information|Warning|Verbose)",
"AzureTableEnabled": false(|true),
"AzureTableTraceLevel": "Error(|Information|Warning|Verbose)",
"AzureBlobEnabled": false(|true),
"AzureBlobTraceLevel": "Error(|Information|Warning|Verbose)",
}
GET /api/logs/recent
Retrieve application logs found in the LogFiles\Application folder, starting with the most recent entries.
The following query string parameter(s) are supported:
- top: the number of log entries to return (default is 100, maximum is 1000)
GET /api/extensionfeed
List all extension package infos available on the online (remote) server. The following query strings are supported.
- filter: matching string
GET /api/siteextensions
List all extension package infos currently installed. The following query strings are supported.
- filter: matching string
GET /api/extensionfeed/{id}
Get a package info with {id} from remote store.
GET /api/siteextensions/{id}
Get a package info with {id} currently installed.
PUT /api/siteextensions/{id}
Install or update the package to local machine. The payload is the package info returned by List/Get apis above.
DELETE /api/siteextensions/{id}
Uninstall the package with {id}.
$username = "`$website"
$password = "pwd"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$apiUrl = "https://{sitename}.scm.azurewebsites.net/api/zip/site/wwwroot"
$filePath = "C:\Temp\books.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method PUT -InFile $filePath -ContentType "multipart/form-data"