aboutsummaryrefslogblamecommitdiffstats
path: root/paste.sr.ht/api.md
blob: 3deadeb08e2a7602a001499c8b9e6655c29d9aa2 (plain) (tree)























































































                                                                                
                                          







                                                                       
# API Reference

The paste.sr.ht API allows you to browse and create pastes on paste.sr.ht
programmatically. This API follows the [standard sourcehut API
conventions](../api-conventions.md).

## Authentication

Authentication is done via the [meta.sr.ht OAuth
flow](https://man.sr.ht/meta.sr.ht/oauth-api.md). The following OAuth scopes are
available for paste.sr.ht:

- **paste:read** & **paste:write**: read & write pastes

## Resources

### Paste resource

```json
{
  "created": "timestamp",
  "sha": "id of this paste (SHA-1 hash)",
  "user": { short-form user resource },
  "files": [
    {
      "filename": "filename" or null,
      "blob_id": "id of this blob (SHA-1 hash)"
    }, ...
  ]
}
```

### Blob resource

```json
{
  "created": "timestamp",
  "sha": "id of this blob (SHA-1 hash)",
  "contents": "contents of this blob"
}
```

## Endpoints

### GET /api/pastes

List of paste resources.

**OAuth scope**: `pastes:read`

### POST /api/pastes

Create a new paste;

**OAuth scope**: `pastes:write`

**Request body**

```json
{
  "files": [
    {
      "filename": "filename" or null, (optional)
      "contents": "contents of this file"
    }
  ]
}
```

- **contents** must be a UTF-8 encoded string; binary files are not allowed

**Response**

The new paste resource.

### GET /api/pastes/:sha

Retrieves a paste resource.

### GET /api/blobs/:sha

Retrieves a blob resource.

## Webhooks

### /api/pastes/...

Webhook for paste events. Includes the [standard webhook
endpoints](../api-conventions.md#webhooks)

#### paste:create:

Issued when a new paste is created. Requires `paste:read` OAuth scope. 

**Request body**

Affected paste resource.