Find the project for a repository
Part of Runs, 7 operations. The overview covers keys, scopes and errors.
GET /v1/runs/projects
Your projects whose linked repository is repo, compared after normalising the URL (scheme, git@host: form, a trailing .git and case do not matter). Pass a returned id as project to createRun. Only id and name are returned. An empty list means no project is linked to that repository. Refusal: 400 invalid_repo.
A caller key holding runs:read (Authorization: Bearer sbc_… or x-api-key: sbc_…), or a signed-in session.
Query parameters
repostring requiredThe repository URL, on any git host:
https://example.com/o/r,ssh://[email protected]/o/r.gitor[email protected]:o/r.gitall match the same project.
Response 200
The matching projects, possibly none.
projectsarray of object required2 fields
idstring requiredThe project id to pass as
projectto createRun.namestring requiredThe project’s name in the Superbot app.
Errors
| Status | Code | What to change |
|---|---|---|
| 400 | invalid_request | A parameter or body field is invalid; |
| 401 | unauthorized | Send a live caller key or session as |
| 403 | insufficient_scope | The key lacks the scope in |
| 429 | rate_limited | Over the per-key request bucket; retry after |
curl
curl -sS -X GET "https://superbot.gg/v1/runs/projects?repo=https%3A%2F%2Fexample.com%2Facme%2Fapp" \
-H "Authorization: Bearer $SUPERBOT_API_KEY"JavaScript
const res = await fetch(`https://superbot.gg/v1/runs/projects?repo=https%3A%2F%2Fexample.com%2Facme%2Fapp`, {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SUPERBOT_API_KEY}`,
},
});
console.log(res.status, await res.json());Python
import os
import requests
res = requests.request(
"GET",
"https://superbot.gg/v1/runs/projects?repo=https%3A%2F%2Fexample.com%2Facme%2Fapp",
headers={
"Authorization": f"Bearer {os.environ['SUPERBOT_API_KEY']}",
},
)
print(res.status_code, res.json())200 The matching projects, possibly none.
{
"projects": [
{
"id": "prj_7f3a",
"name": "your-name"
}
]
}400 The request is malformed or a parameter is invalid; `param` names the field.
{
"error": "invalid_request",
"message": "A parameter or body field is invalid; param names it and issues lists every problem.",
"doc_url": "https://superbot.gg/developers#errors-invalid_request",
"request_id": "req_5f1c0a9e2b7d4c3a1e0f9b8d"
}401 The bearer is missing, malformed or unknown.
{
"error": "unauthorized",
"message": "Send a live caller key or session as Authorization: Bearer … or x-api-key. No key yet: create one at /account/api, or sign a user in at /auth.md.",
"doc_url": "https://superbot.gg/developers#errors-unauthorized",
"request_id": "req_5f1c0a9e2b7d4c3a1e0f9b8d"
}403 The key lacks a scope (insufficient_scope), is revoked, or may not call this route.
{
"error": "insufficient_scope",
"message": "The key lacks the scope in required_scopes; mint a key that holds it.",
"doc_url": "https://superbot.gg/developers#errors-insufficient_scope",
"request_id": "req_5f1c0a9e2b7d4c3a1e0f9b8d"
}429 Over the per-key request bucket; retry after x-ratelimit-reset.
{
"error": "rate_limited",
"message": "Over the per-key request bucket; retry after x-ratelimit-reset.",
"doc_url": "https://superbot.gg/developers#errors-rate_limited",
"request_id": "req_5f1c0a9e2b7d4c3a1e0f9b8d"
}No operation matches this filter.