Versioning service#
This is the external-facing portion of VersioningService which gives clients access to functionality that doesn’t create new commits. The creation of new commits should be done via the resource-specific services.
OpenAPI file: VersioningService.json
Endpoints#
Create branch#
POST /scout/v1/versioning/{resourceRid}/branch
Creates a mutable pointer to the provided commit. “Saves”/”commits” can be performed on this pointer. Throws if the name is already used as a commit pointer for this resource. Throws if the provided commit doesn’t exist.
Path parameters
resourceRidstring (RID) required
Body
existingCommitstring required
branchNamestring required
Response
ridstring (RID)
namestring
resourceRidstring (RID)
commitstring
createdBystring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"existingCommit": "<commit id>",
"branchName": "<branch name>"
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch",
headers={"Authorization": "Bearer <api key>"},
json={"existingCommit": "<commit id>", "branchName": "<branch name>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch",
headers={"Authorization": "Bearer <api key>"},
json={"existingCommit": "<commit id>", "branchName": "<branch name>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch",
headers={"Authorization": "Bearer <api key>"},
json={"existingCommit": "<commit id>", "branchName": "<branch name>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<branch rid>",
"name": "<branch name>",
"resourceRid": "<resource rid>",
"commit": "<commit id>",
"createdBy": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
Get branches#
GET /scout/v1/versioning/{resourceRid}/branch
Returns all branches for the resource in order of most recently updated.
Path parameters
resourceRidstring (RID) required
Response
The body is an array of Branch.
Fields of Branch
ridstring (RID)
namestring
resourceRidstring (RID)
commitstring
createdBystring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
[
{
"rid": "<branch rid>",
"name": "<branch name>",
"resourceRid": "<resource rid>",
"commit": "<commit id>",
"createdBy": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
]
Create tag#
POST /scout/v1/versioning/{resourceRid}/tag
Creates an immutable pointer to the provided commit. Throws if the name is already used as a commit pointer for this resource. Throws if the provided commit doesn’t exist.
Path parameters
resourceRidstring (RID) required
Body
existingCommitstring required
tagNamestring required
Response
ridstring (RID)
namestring
resourceRidstring (RID)
commitstring
createdBystring (RID)
createdAtstring (date-time)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"existingCommit": "<commit id>",
"tagName": "<tag name>"
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag",
headers={"Authorization": "Bearer <api key>"},
json={"existingCommit": "<commit id>", "tagName": "<tag name>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag",
headers={"Authorization": "Bearer <api key>"},
json={"existingCommit": "<commit id>", "tagName": "<tag name>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag",
headers={"Authorization": "Bearer <api key>"},
json={"existingCommit": "<commit id>", "tagName": "<tag name>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<tag rid>",
"name": "<tag name>",
"resourceRid": "<resource rid>",
"commit": "<commit id>",
"createdBy": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z"
}
Get commit#
GET /scout/v1/versioning/{resourceRid}/commit/{commitId}
Throws if the commit doesn’t exist.
Path parameters
resourceRidstring (RID) required
commitIdstring required
Response
idstring
resourceRidstring (RID)
parentCommitstring
mergeParentCommitstring
messagestring
isWorkingStatebooleanA working state commit is created via the
saveWorkingStateendpoint and is non-permanent. In the future, it may be compacted and not exist.committedBystring (RID)
committedAtstring (date-time)
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"id": "<commit id>",
"resourceRid": "<resource rid>",
"parentCommit": "<commit id>",
"mergeParentCommit": "<commit id>",
"message": "<message>",
"isWorkingState": true,
"committedBy": "<user rid>",
"committedAt": "2026-01-01T00:00:00Z"
}
Batch get commits#
POST /scout/v1/versioning/commit/batch-get
Filters out resources that are not authorized.
Body
The body is an array of ResourceAndCommitId.
Fields of ResourceAndCommitId
resourceRidstring (RID) required
commitIdstring required
Response
The body is an array of Commit.
Fields of Commit
idstring
resourceRidstring (RID)
parentCommitstring
mergeParentCommitstring
messagestring
isWorkingStatebooleanA working state commit is created via the
saveWorkingStateendpoint and is non-permanent. In the future, it may be compacted and not exist.committedBystring (RID)
committedAtstring (date-time)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/commit/batch-get" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '[
{
"resourceRid": "<resource rid>",
"commitId": "<commit id>"
}
]'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/commit/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "commitId": "<commit id>"}],
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/commit/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "commitId": "<commit id>"}],
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/commit/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "commitId": "<commit id>"}],
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
[
{
"id": "<commit id>",
"resourceRid": "<resource rid>",
"parentCommit": "<commit id>",
"mergeParentCommit": "<commit id>",
"message": "<message>",
"isWorkingState": true,
"committedBy": "<user rid>",
"committedAt": "2026-01-01T00:00:00Z"
}
]
Get commit by branch#
GET /scout/v1/versioning/{resourceRid}/branch/{branchName}/commit
Returns the commit pointed to by the branch. Throws if the branch doesn’t exist.
Path parameters
resourceRidstring (RID) required
branchNamestring required
Response
idstring
resourceRidstring (RID)
parentCommitstring
mergeParentCommitstring
messagestring
isWorkingStatebooleanA working state commit is created via the
saveWorkingStateendpoint and is non-permanent. In the future, it may be compacted and not exist.committedBystring (RID)
committedAtstring (date-time)
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>/commit" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>/commit",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>/commit",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>/commit",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"id": "<commit id>",
"resourceRid": "<resource rid>",
"parentCommit": "<commit id>",
"mergeParentCommit": "<commit id>",
"message": "<message>",
"isWorkingState": true,
"committedBy": "<user rid>",
"committedAt": "2026-01-01T00:00:00Z"
}
Get commit by tag#
GET /scout/v1/versioning/{resourceRid}/tag/{tagName}/commit
Returns the commit pointed to by the tag. Throws if the tag doesn’t exist.
Path parameters
resourceRidstring (RID) required
tagNamestring required
Response
idstring
resourceRidstring (RID)
parentCommitstring
mergeParentCommitstring
messagestring
isWorkingStatebooleanA working state commit is created via the
saveWorkingStateendpoint and is non-permanent. In the future, it may be compacted and not exist.committedBystring (RID)
committedAtstring (date-time)
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>/commit" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>/commit",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>/commit",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>/commit",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"id": "<commit id>",
"resourceRid": "<resource rid>",
"parentCommit": "<commit id>",
"mergeParentCommit": "<commit id>",
"message": "<message>",
"isWorkingState": true,
"committedBy": "<user rid>",
"committedAt": "2026-01-01T00:00:00Z"
}
Get least common ancestor#
POST /scout/v1/versioning/{resourceRid}/commit/least-common-ancestor
Returns the least common ancestor of the two commits. Throws if either commit doesn’t exist.
Path parameters
resourceRidstring (RID) required
Body
commit1string required
commit2string required
Response
The body is a string.
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/least-common-ancestor" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"commit1": "<commit id>",
"commit2": "<commit id>"
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/least-common-ancestor",
headers={"Authorization": "Bearer <api key>"},
json={"commit1": "<commit id>", "commit2": "<commit id>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/least-common-ancestor",
headers={"Authorization": "Bearer <api key>"},
json={"commit1": "<commit id>", "commit2": "<commit id>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/least-common-ancestor",
headers={"Authorization": "Bearer <api key>"},
json={"commit1": "<commit id>", "commit2": "<commit id>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
"<commit id>"
Get commit history#
GET /scout/v1/versioning/{resourceRid}/commit/{commitId}/history
Returns the commit history sorted by creation time descending. Excludes working state commits unless includeWorkingState is true. Throws if the commit doesn’t exist.
Path parameters
resourceRidstring (RID) required
commitIdstring required
Query parameters
pageSizeintegerDefaults to 100, throws if larger than 1000.
nextPageTokenstring
includeWorkingStatebooleanWhen true, include working-state (compactible) commits in the history. Defaults to false. Working-state commits may later be compacted and cease to exist.
Response
historyarray ofCommit
Fields of
Commitidstring
resourceRidstring (RID)
parentCommitstring
mergeParentCommitstring
messagestring
isWorkingStatebooleanA working state commit is created via the
saveWorkingStateendpoint and is non-permanent. In the future, it may be compacted and not exist.committedBystring (RID)
committedAtstring (date-time)
nextPageTokenstring
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>/history" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>/history",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>/history",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/commit/<commit id>/history",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"history": [
{
"id": "<commit id>",
"resourceRid": "<resource rid>",
"parentCommit": "<commit id>",
"mergeParentCommit": "<commit id>",
"message": "<message>",
"isWorkingState": true,
"committedBy": "<user rid>",
"committedAt": "2026-01-01T00:00:00Z"
}
],
"nextPageToken": "<token>"
}
Persist commits#
POST /scout/v1/versioning/commit/persist
Persists the commits so that they are not compacted. This operation is atomic - either all commits are persisted or none are (in the case of an error).
Body
The body is an array of ResourceAndCommitId.
Fields of ResourceAndCommitId
resourceRidstring (RID) required
commitIdstring required
Response
No content (HTTP 204).
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/commit/persist" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '[
{
"resourceRid": "<resource rid>",
"commitId": "<commit id>"
}
]'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/commit/persist",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "commitId": "<commit id>"}],
)
response.raise_for_status()
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/commit/persist",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "commitId": "<commit id>"}],
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/commit/persist",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "commitId": "<commit id>"}],
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Get branch#
GET /scout/v1/versioning/{resourceRid}/branch/{branchName}
Throws if the branch doesn’t exist.
Path parameters
resourceRidstring (RID) required
branchNamestring required
Response
ridstring (RID)
namestring
resourceRidstring (RID)
commitstring
createdBystring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<branch rid>",
"name": "<branch name>",
"resourceRid": "<resource rid>",
"commit": "<commit id>",
"createdBy": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
Delete branch#
DELETE /scout/v1/versioning/{resourceRid}/branch/{branchName}
Deletes the branch pointer. Throws if the branch doesn’t exist. Throws if you attempt to delete the “main” branch.
Path parameters
resourceRidstring (RID) required
branchNamestring required
Response
No content (HTTP 204).
Request
curl -X DELETE "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.delete(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.delete(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.delete(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/branch/<branch name>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Batch get branches#
POST /scout/v1/versioning/branch/batch-get
Omits branches that are not authorized.
Body
The body is an array of ResourceAndBranchName.
Fields of ResourceAndBranchName
resourceRidstring (RID) required
branchNamestring required
Response
The body is an array of Branch.
Fields of Branch
ridstring (RID)
namestring
resourceRidstring (RID)
commitstring
createdBystring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-get" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '[
{
"resourceRid": "<resource rid>",
"branchName": "<branch name>"
}
]'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "branchName": "<branch name>"}],
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "branchName": "<branch name>"}],
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "branchName": "<branch name>"}],
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
[
{
"rid": "<branch rid>",
"name": "<branch name>",
"resourceRid": "<resource rid>",
"commit": "<commit id>",
"createdBy": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z"
}
]
Get tag#
GET /scout/v1/versioning/{resourceRid}/tag/{tagName}
Throws if the tag doesn’t exist.
Path parameters
resourceRidstring (RID) required
tagNamestring required
Response
ridstring (RID)
namestring
resourceRidstring (RID)
commitstring
createdBystring (RID)
createdAtstring (date-time)
Request
curl "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<tag rid>",
"name": "<tag name>",
"resourceRid": "<resource rid>",
"commit": "<commit id>",
"createdBy": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z"
}
Delete tag#
DELETE /scout/v1/versioning/{resourceRid}/tag/{tagName}
Deletes the tag pointer. Throws if the tag doesn’t exist.
Path parameters
resourceRidstring (RID) required
tagNamestring required
Response
No content (HTTP 204).
Request
curl -X DELETE "https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.delete(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.delete(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.delete(
"https://api.gov.nominal.io/api/scout/v1/versioning/<resource rid>/tag/<tag name>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Delete branches#
POST /scout/v1/versioning/branch/batch-delete
Deletes the branch pointers. Throws if any resource or branch is non-existent or unauthorized. Throws if any attempt is made to delete “main”.
Body
The body is an array of ResourceAndBranchName.
Fields of ResourceAndBranchName
resourceRidstring (RID) required
branchNamestring required
Response
No content (HTTP 204).
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-delete" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '[
{
"resourceRid": "<resource rid>",
"branchName": "<branch name>"
}
]'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-delete",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "branchName": "<branch name>"}],
)
response.raise_for_status()
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-delete",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "branchName": "<branch name>"}],
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v1/versioning/branch/batch-delete",
headers={"Authorization": "Bearer <api key>"},
json=[{"resourceRid": "<resource rid>", "branchName": "<branch name>"}],
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Errors#
Errors shows how these errors are sent.
Each error’s errorName is Scout: followed by its name below.
Status |
Name |
Notes |
|---|---|---|
400 |
|
|
400 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
409 |
|
|
409 |
|
|
409 |
|
|
409 |
|
Types#
Branch#
ridstring (RID) required
namestring required
resourceRidstring (RID) required
commitstring required
createdBystring (RID) required
createdAtstring (date-time) required
updatedAtstring (date-time) required
Commit#
idstring required
resourceRidstring (RID) required
parentCommitstring
mergeParentCommitstring
messagestring required
isWorkingStateboolean requiredA working state commit is created via the
saveWorkingStateendpoint and is non-permanent. In the future, it may be compacted and not exist.committedBystring (RID) required
committedAtstring (date-time) required
ResourceAndBranchName#
resourceRidstring (RID) required
branchNamestring required
ResourceAndCommitId#
resourceRidstring (RID) required
commitIdstring required
Tag#
ridstring (RID) required
namestring required
resourceRidstring (RID) required
commitstring required
createdBystring (RID) required
createdAtstring (date-time) required
Page design based on Scalar, MIT License.