> This page is for version 2025-09-18 (default).
> For other versions, use one of these documentation indexes:
> - 2025-09-18 (default): https://apidocs.polytomic.com/2025-09-18/llms.txt
> - 2024-02-08: https://apidocs.polytomic.com/2024-02-08/llms.txt
> - 2023-04-25: https://apidocs.polytomic.com/2023-04-25/llms.txt
> - 2022-12-12: https://apidocs.polytomic.com/2022-12-12/llms.txt
> - 2021-05-23: https://apidocs.polytomic.com/2021-05-23/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://apidocs.polytomic.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://apidocs.polytomic.com/_mcp/server.

# List Harbor Action Configuration Schemas

GET https://app.polytomic.com/api/harbors/{harbor_id}/action-configuration/connections/{connection_id}/schemas

Lists available action schemas for an eligible Harbor source Connection.

You must be an Organization administrator with permission to edit the Harbor
and query the source Connection. Use a writable API credential, not a Harbor
profile credential. Read-only keys are denied because this endpoint requires
Harbor edit permission. Discovery does not require the Harbor Actions entitlement.

The Connection must populate the Harbor through a non-deleted Bulk Sync or Model
Sync targeting its backing Connection. The response lists action schemas, not
records. Use the next page token with the same search filter to continue.

Operation IDs in the catalog are hints. Operation discovery returns the current
configurable fields for a schema.

Reference: https://apidocs.polytomic.com/api-reference/harbors/list-action-configuration-schemas

## Authentication

- `Authorization` header (bearer token, required) — Bearer user API key
- `Authorization` header (basic auth, required) — Basic organization-scoped API key

## Request

### Path parameters

- `harbor_id` (string, required) — Unique identifier of the Harbor
- `connection_id` (string, required) — Source Connection whose action grants you want to manage

### Query parameters

- `search` (string, optional) — Filter action schemas by ID or name.
- `limit` (integer, optional, default: 50) — Maximum number of schemas to return
- `page_token` (string, optional) — Opaque cursor returned by the previous request

## Response

### 200

OK

- `data` (list of HarborActionSchemaResponse, optional, nullable) — Action schemas on this page
- `pagination` (PaginationDetails, optional) — Pagination details for the next page

## Errors

### 403 Forbidden Error

Forbidden

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

### 404 Not Found Error

Not Found

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

### 409 Conflict Error

Conflict

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

### 422 Unprocessable Entity Error

Unprocessable Entity

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

### 500 Internal Server Error

Internal Server Error

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

### 503 Service Unavailable Error

Service Unavailable

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

## Types

### HarborActionSchemaResponse

- `id` (string, optional) — Stable action schema ID
- `name` (string, optional) — Action schema name
- `operations` (list of string, optional) — Operation IDs advertised by the schema catalog. Operation discovery supplies the current configurable fields.

### PaginationDetails

- `next_page_token` (string, optional) — Token for fetching the next page of results

## Examples

**Response**

```json
{
  "data": [
    {
      "id": "string",
      "name": "string",
      "operations": [
        "string"
      ]
    }
  ],
  "pagination": {
    "next_page_token": "AmkYh8v0jR5B3kls2Qcc9y8MjrPmvR4CvaK7H0F4rEwqvg76K=="
  }
}
```

**SDK Code**

```python
import requests

url = "https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://app.polytomic.com/api/harbors/248df4b7-aa70-47b8-a036-33ac447e668d/action-configuration/connections/248df4b7-aa70-47b8-a036-33ac447e668d/schemas")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```