API reference

Repository contents

A repository's settings, files, commits, diffs and insights.
GET/v1/orgs/:orgId/git-credentials

The caller's machine keys in the org (names, scopes, expiry; never secrets).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Errors

  • 403Sign in with the command line to create git credentials.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/git-credentials' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  keys: {
    keyId: string
    orgId: string
    name: string
    kind: "api" | "mcp" | "agent"
    scopes: string[]
    createdBy: string
    machineId?: string
    expiresAt?: number
    createdAt?: number
  }[]
}
POST/v1/orgs/:orgId/git-credentials

Creates a key with the caller's git scopes in the org (git:read, and git:write when they hold it) for one machine, replacing the machine's previous key. The key is returned once; it expires after 90 days. Needs a second factor confirmed in the last 10 minutes (403 code: "step_up": the CLI runs ID's step-up sign-in and asks again), and tells the org's owners (security.git_key).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • machineIdstringrequired

    Matches ^[A-Za-z0-9_-]{16,64}$.

  • machinestringrequired

    1–64 characters. Trimmed.

Errors

  • 403Sign in with the command line to create git credentials.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/git-credentials' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "machineId": "<machineId>",
    "machine": "example"
  }'
Send it from this page with your session or a key.

Response 201

{
  key: string
  keyId: string
  name: string
  scopes: ("platform:admin" | "platform:infra" | "platform:analytics" | "platform:coverage" | "org:read" | "org:write" | "audit:read" | "tenant:read" | "tenant:write" | "members:read" | "members:write" | "projects:read" | "projects:write" | "deployments:read" | "deployments:write" | "env:read" | "env:write" | "keys:read" | "keys:use" | "keys:write" | "domains:read" | "domains:write" | "resources:read" | "resources:write" | "git:read" | "git:write" | "git:admin" | "logs:read" | "analytics:read" | "knowledge:read" | "knowledge:write" | "connectors:read" | "connectors:write" | "chat:use" | "mcp:connect" | "agents:read" | "agents:write" | "agents:run" | "mail:read" | "mail:send" | "mail:admin" | "calendar:read" | "calendar:write" | "contacts:read" | "contacts:write" | "issues:read" | "issues:write" | "issues:admin" | "maps:read" | "maps:write" | "drive:read" | "drive:write" | "crm:read" | "crm:write" | "crm:admin" | "marketing:read" | "marketing:write" | "marketing:send" | "marketing:admin" | "health:read" | "health:write" | "weather:read" | "weather:write" | "food:read" | "food:write" | "vehicles:read" | "vehicles:write" | "vehicles:control" | "vehicles:admin" | "sharing:read" | "sharing:write")[]
  expiresAt: number
}
DELETE/v1/orgs/:orgId/git-credentials/:keyId

Revokes one of the caller's machine keys.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • keyId

    Key id (key_…).

Errors

  • 403Sign in with the command line to create git credentials.
  • 404Key not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/git-credentials/{keyId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/branches

Branches with their last commit.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branches' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  defaultBranch: null | string
  branches: {
    name: string
    commit: {
      id: string
      message: string
      author: {
        name?: string
        email?: string
        date?: number
      }
      committedAt: null | number
    }
    isDefault: boolean
    protected: boolean
    openPull: null | number
  }[]
}
GET/v1/orgs/:orgId/repos/:name/branches/divergence

Commits ahead of / behind the default branch, per name (repeatable), bounded.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
  • 404Not found
  • 404Commit not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branches/divergence' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  base: null | string
  divergence: {}
}
| {
  base: null | string
  divergence: {
    [key: string]: null | {
      ahead: number
      behind: number
      exact: boolean
    }
  }
}
POST/v1/orgs/:orgId/repos/:name/branches

Creates a branch from a branch, tag or commit.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • namestringrequired

    1–256 characters. Trimmed.

  • fromstringrequired

    1–256 characters.

Errors

  • 400That commit doesn't exist.
  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
  • 409A branch with this name already exists.
  • 409A tag with this name already exists.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branches' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example",
    "from": "example"
  }'
Send it from this page with your session or a key.

Response 201

{
  branch: {
    name: string
    commitId: string
  }
}
DELETE/v1/orgs/:orgId/repos/:name/branches

Deletes the branch name. The default branch and branches whose rule blocks deletion can't be deleted.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • namestringrequired

    1–256 characters.

Errors

  • 400The default branch can't be deleted.
  • 404Repository not found
  • 404Branch not found.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branches?name=Example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  deleted: string
  commitId: null | string
}
GET/v1/orgs/:orgId/repos/:name/tags

Tags and their commits. Create tags by pushing them with git.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/tags' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  tags: {
    name: string
    annotated: boolean
    object: string
    commit: {
      id: string
      message: string
      author: {
        name?: string
        email?: string
        date?: number
      }
      committedAt: null | number
    }
  }[]
}
POST/v1/orgs/:orgId/repos/:name/contents

Commits file changes from the web: add or replace (base64 content), move or delete files, on branch or a newBranch. Fails if the branch moved since parentCommitId, 403 where a branch rule needs a pull request (unless you're on its bypass list), and 422 secret_detected with the findings when secret scanning finds something nobody allowed.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • uploadIdstring

    Matches ^[0-9a-f]{32}$.

  • branchstringrequired

    1–256 characters.

  • parentCommitIdstring

    Matches ^[0-9a-f]{40}$.

  • messagestringrequired

    1–1,000 characters. Trimmed.

  • descriptionstring

    Up to 20,000 characters.

  • newBranchstring

    Up to 256 characters. Trimmed.

  • changes(object | object | object | object)[]required

    1–1,000 items.

Errors

  • 400…: …
  • 400… is changed more than once.
  • 400A file can't be moved onto itself.
  • 400uploadId is required for uploaded files.
  • 400parentCommitId is required.
  • 400Invalid upload id.
  • 400An uploaded file is missing. Upload the files again.
  • 404Repository not found
  • 404Branch … not found.
  • 409A branch named … already exists.
  • 409A tag named … already exists.
  • 413Web commits can change up to 1000 files and 50 MB of content. Push larger changes with git.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/contents' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "branch": "example",
    "message": "example",
    "changes": [
      {}
    ]
  }'
Send it from this page with your session or a key.

Response 201

{
  commitId?: string
  branch: string
}

Response 422

{
  error: string
  code: string
  findings: {
    line: number
    fingerprint: string
    preview: string
    path?: string
    rule: "aws_access_key" | "aws_secret_key" | "stripe_key" | "private_key" | "si_token" | "github_token"
    label: string
  }[]
}
POST/v1/orgs/:orgId/repos/:name/contents/uploads

Presigned upload URLs for a large web commit, one per file (sizes in bytes); the commit then names uploadId and each file's upload index. Uploads not committed are removed after a day.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • filesobject[]required

    1–1,000 items.

  • files[].sizeintegerrequired

    0–52428800.

Errors

  • 404Repository not found
  • 413Web commits are limited to 50 MB. Push larger changes with git.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/contents/uploads' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "files": [
      {
        "size": 1
      }
    ]
  }'
Send it from this page with your session or a key.

Response 201

{
  uploadId: string
  uploads: {
    index: number
    url: string
  }[]
}
POST/v1/orgs/:orgId/repos/:name/contents/archive

ZIP of a branch, tag or commit built in the background (for archives too large for the portal): pending until it exists, then a download link valid for 15 minutes.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • refstringrequired

    1–256 characters.

Errors

  • 404Repository not found
  • 404Branch or tag not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/contents/archive' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "ref": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  status: "ready"
  url: string
} | {
  status: "pending"
} | {
  status: "failed"
  error: string
}
GET/v1/orgs/:orgId/repos/:name/contents/raw

File bytes; the portal's /raw route serves them with the right type. Files over 4 MB (a Lambda response's limit, base64) answer JSON with x-si-raw: large instead: a download link from the staging bucket (ready), pending while the archiver fetches it, or failed.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstringrequired

    At least 1 character.

  • pathstringrequired

    At least 1 character.

  • download"0" | "1"

Errors

  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/contents/raw?ref=example&path=example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  blobId: string
  commitId: string
  status: "ready"
  url: string
} | {
  blobId: string
  commitId: string
  status: "pending"
} | {
  blobId: string
  commitId: string
  status: "failed"
  error: string
}
GET/v1/orgs/:orgId/repos/:name/contents/files

Every file path at a ref (for the file finder and archives), bounded.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstringrequired

    At least 1 character.

Errors

  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/contents/files?ref=example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  files: {
    path: string
    blobId: string
    mode: string
    type: "file" | "link"
  }[]
  truncated: boolean
  commitId: string
}
POST/v1/orgs/:orgId/repos/:name/contents/blobs

Blob contents (base64) in request order, as many as fit in one response; the caller asks again for the rest. Blobs too large for a response are marked tooLarge.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • idsstring[]required

    1–50 items. Each matches ^[0-9a-f]{40}$.

Errors

  • 404Repository not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/contents/blobs' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "ids": [
      "example"
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  blobs: {
    id: string
    content?: string
    tooLarge?: true
  }[]
}
GET/v1/orgs/:orgId/repos/:name/compare

Commits and changed files on head since it diverged from base, whether it merges cleanly, and any open pull request between them.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • basestringrequired

    1–256 characters.

  • headstringrequired

    1–256 characters.

Errors

  • 400These branches are too far apart to compare.
  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
  • 404Branch or commit not found.
  • 404Commit not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/compare?base=example&head=example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  mergeBase: string
  status: string
  aheadBy: number
  behindBy: number
  exact: true
  commits: []
  commitsTruncated: false
  files: []
  total: number
  truncated: false
  mergeOptions: []
  conflicts: []
  base: {
    ref: string
    commitId: string
  }
  head: {
    ref: string
    commitId: string
  }
  pull: null | number
}
| {
  mergeOptions: ("fast-forward" | "squash" | "three-way")[]
  conflicts: {
    path: string
    conflicts: number
    binary: boolean
    kind: "type" | "mode" | "content"
  }[]
  files: {
    path: string
    previousPath?: string
    change: "added" | "deleted" | "modified" | "renamed"
    similarity?: number
    additions: number
    deletions: number
    binary?: boolean
    collapsed?: boolean
    hunks: {
      oldStart: number
      oldLines: number
      newStart: number
      newLines: number
      lines: string[]
    }[]
  }[]
  total: number
  truncated: boolean
  mergeBase: null | string
  status: string
  aheadBy: number
  behindBy: number
  exact: boolean
  commits: {
    id: string
    message: string
    author: {
      name?: string
      email?: string
      date?: number
    }
    parents: string[]
    committedAt?: number
  }[]
  commitsTruncated: boolean
  base: {
    ref: string
    commitId: string
  }
  head: {
    ref: string
    commitId: string
  }
  pull: null | number
}
GET/v1/orgs/:orgId/repos/:name/labels

The repository's labels.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/labels' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  labels: {
    name: string
    color: string
    description: string
  }[]
}
PUT/v1/orgs/:orgId/repos/:name/labels

Creates or updates a label by name.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • namestringrequired

    1–50 characters. Trimmed.

  • color"chart-1" | "chart-2" | "chart-3" | "chart-4" | "chart-5" | "destructive" | "primary" | "muted-foreground"required
  • descriptionstring

    Up to 100 characters. Trimmed.

Errors

  • 400A repository can have up to 100 labels.
  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/labels' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example",
    "color": "chart-1"
  }'
Send it from this page with your session or a key.

Response 200

{
  label: {
    name: string
    color: string
    description: string
  }
}
DELETE/v1/orgs/:orgId/repos/:name/labels

Deletes the label name and removes it from issues and pull requests.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • namestringrequired

    1–50 characters.

Errors

  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/labels?name=Example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/-/notifications

Your email settings for issues and pull requests in the organization: all off, and the repositories you muted. People only.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Errors

  • 403Notification settings belong to people.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/-/notifications' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  off: boolean
  muted: {
    repoId: string
    name: string
  }[]
}
PUT/v1/orgs/:orgId/repos/-/notifications

Turns your email about issues and pull requests in the organization off (off: true) or back on. Muted repositories stay muted.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • offbooleanrequired

Errors

  • 403Notification settings belong to people.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/-/notifications' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "off": true
  }'
Send it from this page with your session or a key.

Response 200

{
  off: boolean
  muted: {
    repoId: string
    name: string
  }[]
}
PUT/v1/orgs/:orgId/repos/:name/notifications

Mutes (or unmutes) one repository for the person.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • mutedbooleanrequired

Errors

  • 403Notification settings belong to people.
  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/notifications' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "muted": true
  }'
Send it from this page with your session or a key.

Response 200

{
  muted: boolean
  off: boolean
}
GET/v1/orgs/:orgId/repos

The organization's repositories with their default branch, language and last update.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  repos: {
    name: string
    resourceId: string
    description: null | string
    defaultBranch: null | string
    createdAt?: number
    updatedAt?: number
    language?: null | string
    access?: {
      mode: "org" | "restricted"
      level: "none" | "write" | "admin" | "read"
    }
  }[]
}
GET/v1/orgs/:orgId/repos/-/available

Whether name can be used for a new repository, and why not.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • namestringrequired

    Up to 100 characters.

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/-/available?name=Example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  name: string
  available: boolean
  reason: null | string
}
GET/v1/orgs/:orgId/repos/-/people

Org members, for assignees and @mentions; with repo, only those who can read that repository.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • repostring

    Up to 100 characters.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/-/people' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    userId: string
    name: null | string
    email: string
    handle: string
  }[]
}
POST/v1/orgs/:orgId/repos

Creates a repository, optionally with a first commit holding a README, a .gitignore template (Node, Next.js, Python, Go or Rust) and a license (MIT or Apache 2.0).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • namestringrequired

    Matches ^[a-z0-9][a-z0-9-]{1,38}[a-z0-9]$.

  • descriptionstring

    Up to 1,000 characters. Trimmed.

  • readmeboolean

    Default false.

  • gitignoreany
  • licenseany
  • defaultBranchstring

    Default "main". Trimmed.

Errors

  • 400Unknown location: undefined
  • 409A repository with this name already exists.
  • 502Could not create the repository.
  • 502Could not create the initial commit.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example"
  }'
Send it from this page with your session or a key.

Response 201

{
  repo: {
    defaultBranch: string
    empty: boolean
    region: string
    type: "repository" | "database" | "bucket"
    name: string
    status?: "error" | "active" | "deleting" | "creating"
    createdAt?: number
    updatedAt?: number
    orgId: string
    resourceId: string
    createdBy: string
    projectId?: string
    location: string
    arn?: string
    physicalName: string
    restoredFrom?: string
    pendingSetup?: boolean
  }
}
POST/v1/orgs/:orgId/repos/:name/rename

Renames a repository. Clone URLs change with it.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • namestringrequired

    Matches ^[a-z0-9][a-z0-9-]{1,38}[a-z0-9]$.

Errors

  • 404Repository not found
  • 409A repository with this name already exists.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/rename' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/repos/:name

Deletes a repository with its history. confirm must be the repository name.

Auth
A person's token or an API key, as Authorization: Bearer.
Scopes
git:write, git:admin (when c.get("repo")?.access.mode === "restricted")
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • confirmstringrequired

Errors

  • 400Type the repository name to confirm.
  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}?confirm=example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/protection

The default branch's protection: how many approvals pull requests into it need. The full rules are at branch-rules.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/protection' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  requiredApprovals: number
  branch: null | string
}
PUT/v1/orgs/:orgId/repos/:name/protection

Sets how many approvals (0–10) pull requests into the default branch need before they can be merged, as the default branch's rule (which also blocks force pushes and deletion; its bypass list stays). 0 lets direct pushes in again. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • requiredApprovalsintegerrequired

    0–10.

Errors

  • 400Push a branch before protecting it.
  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/protection' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "requiredApprovals": 1
  }'
Send it from this page with your session or a key.

Response 200

{
  requiredApprovals: number
  branch: string
}
GET/v1/orgs/:orgId/repos/:name/access

Who can reach the repository (docs/repo-access.md): its mode, the people, groups and machines on its list with names for them, and the last change. For those who can read the repository, and for owners (who manage the list without seeing the code).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/access' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  access: {
    mode: "org" | "restricted"
    users: {
      userId: string
      level: "write" | "admin" | "read"
    }[]
    teams: {
      teamId: string
      level: "write" | "admin" | "read"
    }[]
    machines: {
      id: "checks" | "pipelines" | string | "service:issues"
      level: "write" | "read"
    }[]
  }
  canManage: boolean
  updatedAt: null | number
  updatedBy: null | {
    userId: string
    name: null | string
    email: string
  }
  labels: {
    users: {
      [key: string]: {
        name?: string
        email: string
      }
    }
    teams: {
      [key: string]: {
        name: string
      }
    }
    machines: {
      [key: string]: {
        label: string
        detail?: string
      }
    }
  }
}
PUT/v1/orgs/:orgId/repos/:name/access

Changes who can reach the repository: org owners only (a break-glass, audited), never through a key or an assistant.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • mode"org" | "restricted"required
  • usersobject[]required

    Up to 100 items.

  • users[].userIdstringrequired

    1–64 characters.

  • users[].level"read" | "write" | "admin"required
  • teamsobject[]required

    Up to 50 items.

  • teams[].teamIdstringrequired

    1–64 characters.

  • teams[].level"read" | "write" | "admin"required
  • machinesobject[]required

    Up to 50 items.

  • machines[].idstringrequired

    1–64 characters.

  • machines[].level"read" | "write"required

Errors

  • 403Only owners of the organization can change who can access a repository.
  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/access' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "mode": "org",
    "users": [
      {
        "userId": "<userId>",
        "level": "read"
      }
    ],
    "teams": [
      {
        "teamId": "<teamId>",
        "level": "read"
      }
    ],
    "machines": [
      {
        "id": "<id>",
        "level": "read"
      }
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  access: {
    mode: "org" | "restricted"
    users: {
      userId: string
      level: "write" | "admin" | "read"
    }[]
    teams: {
      teamId: string
      level: "write" | "admin" | "read"
    }[]
    machines: {
      id: "checks" | "pipelines" | string | "service:issues"
      level: "write" | "read"
    }[]
  }
  canManage: boolean
  updatedAt: null | number
  updatedBy: null | {
    userId: string
    name: null | string
    email: string
  }
  labels: {
    users: {
      [key: string]: {
        name?: string
        email: string
      }
    }
    teams: {
      [key: string]: {
        name: string
      }
    }
    machines: {
      [key: string]: {
        label: string
        detail?: string
      }
    }
  }
}
POST/v1/orgs/:orgId/repos/:name/checks

Starts checks of a branch in a sandbox: install, then the typecheck, lint, test and build scripts (or si.json checks). Nothing is deployed. Returns checkId (202). Needs git:write.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • branchstringrequired

    1–200 characters. Trimmed.

Errors

  • 400Invalid branch name.
  • 404Repository not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/checks' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "branch": "example"
  }'
Send it from this page with your session or a key.

Response 202

{
  checkId: string
}
GET/v1/orgs/:orgId/repos/:name/checks/:checkId

A check run's status (queued, running, passed, failed, stopped, timed_out), steps and the end of its output (tail lines, default 80).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • checkId

    Check run id, as returned when the checks started (si-<stage>-checker:<uuid>).

Query parameters

  • tailinteger

    Default 80. 0–500. Coerced from a string.

Errors

  • 404Repository not found
  • 404Check run not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/checks/{checkId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  run: {
    checkId: string
    status: "queued" | "failed" | "stopped" | "running" | "timed_out" | "passed"
    branch: string
    startedAt?: number
    endedAt?: number
    steps: {
      name: string
      status: "skipped" | "failed" | "running" | "passed"
    }[]
    log: string[]
  }
}
DELETE/v1/orgs/:orgId/repos/:name/checks/:checkId

Stops a check run. Needs git:write.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • checkId

    Check run id, as returned when the checks started (si-<stage>-checker:<uuid>).

Errors

  • 404Repository not found
  • 404Check run not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/checks/{checkId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/branch-rules

The branch rules in force (pull requests, approvals, code owners, force-push and deletion blocks, bypass list), whether they were saved or are the defaults, secret scanning (block or off), and the CODEOWNERS file found at the default branch with its errors.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branch-rules' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  rules: {
    branch: string
    requirePullRequest: boolean
    requiredApprovals: number
    requireCodeOwners: boolean
    blockForcePush: boolean
    blockDeletion: boolean
    bypass: string[]
  }[]
  explicit: boolean
  secretScanning: "off" | "block"
  defaultBranch: null | string
  codeowners: {
    path: null | string
    rules: number
    errors: {
      line: number
      message: string
    }[]
  }
}
PUT/v1/orgs/:orgId/repos/:name/branch-rules

Replaces the branch rules (up to 20; a name or a prefix ending in *) and optionally sets secret scanning. People on a bypass list must be able to write the repository. Open pull requests get the approval rules their target now asks for. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • rulesobject[]required

    Up to 20 items.

  • rules[].branchstringrequired

    1–256 characters.

  • rules[].requirePullRequestbooleanrequired
  • rules[].requiredApprovalsintegerrequired

    0–10.

  • rules[].requireCodeOwnersbooleanrequired
  • rules[].blockForcePushbooleanrequired
  • rules[].blockDeletionbooleanrequired
  • rules[].bypassstring[]

    Default []. Up to 20 items. Each up to 64 characters.

  • secretScanning"block" | "off"

Errors

  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branch-rules' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "rules": [
      {
        "branch": "example",
        "requirePullRequest": true,
        "requiredApprovals": 1,
        "requireCodeOwners": true,
        "blockForcePush": true,
        "blockDeletion": true
      }
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  rules: {
    branch: string
    requirePullRequest: boolean
    requiredApprovals: number
    requireCodeOwners: boolean
    blockForcePush: boolean
    blockDeletion: boolean
    bypass: string[]
  }[]
  explicit: true
  secretScanning: "off" | "block"
  defaultBranch: null | string
}
POST/v1/orgs/:orgId/repos/:name/secret-scan/allowances

Says findings a push or commit was refused for aren't secrets: their fingerprints (1–20) with a reason. Covers your pushes and web commits in this repository for an hour; audited. People only, with git:write.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • fingerprintsstring[]required

    1–20 items. Each matches ^[0-9a-f]{16}$.

  • reasonstringrequired

    1–500 characters. Trimmed.

Errors

  • 403Only people can allow a detected secret.
  • 404Repository not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/secret-scan/allowances' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "fingerprints": [
      "example"
    ],
    "reason": "example"
  }'
Send it from this page with your session or a key.

Response 201

{
  allowanceId: string
  expiresAt: number
}
POST/v1/orgs/:orgId/repos/:name/branches/promote

Fast-forwards a protected branch to the tip of from (for pushes too large for the git host to check), never forcing. Only where its rule lets you update it directly (you're on its bypass list, or it doesn't require pull requests), after a secret scan of the changes; audited.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • branchstringrequired

    1–256 characters.

  • fromstringrequired

    1–256 characters.

Errors

  • 400Choose two different branches.
  • 404Repository not found
  • 404Branch … not found.
  • 409… isn't ahead of …: merge or rebase it first.
  • 409… changed. Try again.
  • 409The branches have diverged too far to promote.
  • 409… moved while the change was scanned. Promote again.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branches/promote' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "branch": "example",
    "from": "example"
  }'
Send it from this page with your session or a key.
GET/v1/orgs/:orgId/repos/:name/branches/promote/:promotionId

A promotion that's still scanning: moves it on, then answers as POST …/branches/promote does. Only for whoever began it.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • promotionId

    A promotion (prm_…), as POST …/branches/promote answers it with 202.

Errors

  • 404Repository not found
  • 404Promotion not found.
  • 409… moved while the change was scanned. Promote again.
  • 409… isn't ahead of …: merge or rebase it first.
  • 409… changed. Try again.
  • 409The branches have diverged too far to promote.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/branches/promote/{promotionId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.
GET/v1/orgs/:orgId/repos/:name/read-audit

The repository's read auditing (all, clones or off) and whether owners get clone alerts, defaults filled in.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/read-audit' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  readAudit: "off" | "all" | "clones"
  cloneAlerts: boolean
}
PUT/v1/orgs/:orgId/repos/:name/read-audit

Changes which reads are recorded (readAudit) and clone alerts (cloneAlerts); audited as repo.read_audit_update.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • readAudit"all" | "clones" | "off"
  • cloneAlertsboolean

Also checked: Unknown fields are rejected. Nothing to change.

Errors

  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/read-audit' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "readAudit": "all",
    "cloneAlerts": true
  }'
Send it from this page with your session or a key.

Response 200

{
  readAudit: "off" | "all" | "clones"
  cloneAlerts: boolean
}
GET/v1/orgs/:orgId/repos/:name

Repository details: description, default branch, branches and open issue and pull request counts.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
  • 404Not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  resourceId: string
  description: null | string
  defaultBranch: null | string
  branches: string[]
  tags: string[]
  initialBranch: null | string
  protectedBranch: null | string
  createdAt?: string
  updatedAt?: string
  openIssues: number
  openPulls: number
  scopes: ("platform:admin" | "platform:infra" | "platform:analytics" | "platform:coverage" | "org:read" | "org:write" | "audit:read" | "tenant:read" | "tenant:write" | "members:read" | "members:write" | "projects:read" | "projects:write" | "deployments:read" | "deployments:write" | "env:read" | "env:write" | "keys:read" | "keys:use" | "keys:write" | "domains:read" | "domains:write" | "resources:read" | "resources:write" | "git:read" | "git:write" | "git:admin" | "logs:read" | "analytics:read" | "knowledge:read" | "knowledge:write" | "connectors:read" | "connectors:write" | "chat:use" | "mcp:connect" | "agents:read" | "agents:write" | "agents:run" | "mail:read" | "mail:send" | "mail:admin" | "calendar:read" | "calendar:write" | "contacts:read" | "contacts:write" | "issues:read" | "issues:write" | "issues:admin" | "maps:read" | "maps:write" | "drive:read" | "drive:write" | "crm:read" | "crm:write" | "crm:admin" | "marketing:read" | "marketing:write" | "marketing:send" | "marketing:admin" | "health:read" | "health:write" | "weather:read" | "weather:write" | "food:read" | "food:write" | "vehicles:read" | "vehicles:write" | "vehicles:control" | "vehicles:admin" | "sharing:read" | "sharing:write")[]
  access: {
    mode: "org" | "restricted"
    level: "none" | "write" | "admin" | "read"
  }
  notifications: null | {
    off: boolean
    muted: boolean
  }
}
PATCH/v1/orgs/:orgId/repos/:name

Updates the description or the default branch.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Request body

  • descriptionstring

    Up to 1,000 characters.

  • defaultBranchstring

    1–255 characters.

Errors

  • 400Branch not found.
  • 404Repository not found
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "description": "example",
    "defaultBranch": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  ok: true
}
GET/v1/orgs/:orgId/repos/:name/tree

Lists a directory at a branch or commit.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstring

    Default "main".

  • pathstring

    Default "/".

Errors

  • 404Repository not found
  • 404Not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/tree' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  commitId?: string
  path: string
  entries: {
    type: "dir"
    name: string
    path: string
  } | {
    type: "file"
    name: string
    path: string
  } | {
    type: "link"
    name: string
    path: string
  } | {
    type: "submodule"
    name: string
    path: string
  }[]
}
GET/v1/orgs/:orgId/repos/:name/blob

A file at a branch or commit. text is null for binary files and files over 1 MB. path is required.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • pathstring
  • refstring

    Default "main".

Errors

  • 400path is required
  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/blob' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  path: string
  size: null
  commitId: string
  blobId: string
  mode?: "EXECUTABLE" | "NORMAL" | "SYMLINK"
  text: null
}
| {
  path: string
  size: number
  commitId?: string
  blobId?: string
  mode?: "EXECUTABLE" | "NORMAL" | "SYMLINK"
  text: null | string
}
GET/v1/orgs/:orgId/repos/:name/commits

First-parent history, newest first. With path, only commits that touch that file or folder (scanned reports how far the search went). Pass the returned next as cursor to continue.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstring

    Default "main". At least 1 character.

  • cursorstring

    Matches ^[0-9a-f]{40}$.

  • limitinteger

    Default 20. 1–50. Coerced from a string.

  • pathstring

Errors

  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
  • 404Commit not found
  • 503The repository is busy. Try again in a moment.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/commits' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  commits: {
    id: string
    message: string
    author: {
      name?: string
      email?: string
      date?: number
    }
    parents: string[]
    committedAt?: number
  }[]
  next: null | string
  scanned: number
}
| {
  commits: {
    id: string
    message: string
    author: {
      name?: string
      email?: string
      date?: number
    }
    parents: string[]
    committedAt?: number
  }[]
  next: null | string
}
GET/v1/orgs/:orgId/repos/:name/last-commits

The last commit that touched each entry of a folder. complete is false while more entries can be resolved by asking again (pending counts them, and their entries are null until then); once complete, null means older than the search reached. When the repository is busy the answer has head: null and nothing resolved; ask again.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstring

    Default "main". At least 1 character.

  • pathstring

    Default "".

Errors

  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/last-commits' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  head: string
  latest: null | {
    id: string
    message: string
    author: {
      name?: string
      date?: number
    }
  }
  entries: {
    [key: string]: null | {
      id: string
      message: string
      author: {
        name?: string
        date?: number
      }
    }
  }
  complete: boolean
  pending: number
  scanned: number
  path: string
} | {
  pending: number
  entries: {
    [key: string]: null | {
      id: string
      message: string
      author: {
        name?: string
        date?: number
      }
    }
  }
  latest: null | {
    id: string
    message: string
    author: {
      name?: string
      date?: number
    }
  }
  scanned: number
  complete: boolean
  head: null
  path: string
}
GET/v1/orgs/:orgId/repos/:name/last-commit

The last commit that touched a file. complete is false while it can still be found by asking again; head: null means the repository was busy.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstring

    Default "main". At least 1 character.

  • pathstringrequired

    At least 1 character.

Errors

  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
  • 404File not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/last-commit?path=example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  head: string
  commit: null | {
    id: string
    message: string
    author: {
      name?: string
      date?: number
    }
  }
  complete: boolean
  scanned: number
  path: string
} | {
  head: null
  commit: null
  complete: boolean
  scanned: number
  path: string
}
GET/v1/orgs/:orgId/repos/:name/commits/:sha

A commit and its changes against its first parent.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • sha

    Full commit id or branch name.

Errors

  • 404Repository not found
  • 404Not found
  • 404Commit not found
  • 404Branch or tag not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/commits/{sha}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  files: {
    path: string
    previousPath?: string
    change: "added" | "deleted" | "modified" | "renamed"
    similarity?: number
    additions: number
    deletions: number
    binary?: boolean
    collapsed?: boolean
    hunks: {
      oldStart: number
      oldLines: number
      newStart: number
      newLines: number
      lines: string[]
    }[]
  }[]
  total: number
  truncated: boolean
  commit: {
    id: string
    message: string
    author: {
      name?: string
      email?: string
      date?: number
    }
    parents: string[]
    committedAt?: number
  }
}
GET/v1/orgs/:orgId/repos/:name/insights

Contributors, weekly commit activity and languages for a branch (the default branch when ref is omitted).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstring

Errors

  • 404Repository not found
  • 404Not found
  • 404Branch or tag not found
  • 404Commit not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/insights' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  ref: string
  head: string
  commitsAnalyzed: number
  historyComplete: boolean
  since: null | number
  contributors: {
    name: string
    email?: string
    commits: number
    lastAt?: number
  }[]
  weeks: {
    week: number
    commits: number
  }[]
  languages: {
    language: string
    files: number
    share: number
  }[]
  languagesComplete: boolean
}