NoxConnect Developers
API version 1 · Capability contract

One API. Five focused services.

NoxConnect is the shared control plane for the Nox product family. Discover what each service can do, check readiness, and make bounded changes without handling provider credentials.

Base URLhttps://app.noxhere.com
API version/api/v1
Formatapplication/json
Contract63 operations

Architecture

A capability-first API

Start by asking the platform what is available. The catalog reports enabled services, current blockers, required connections, access levels, and exact operations. Clients follow advertised operations instead of guessing routes.

Credentials stay behind NoxConnect

GitHub, Slack, and customer credentials are never returned by discovery, setup, configuration, or health APIs. Product services receive only the bounded capability they need.

  1. 01DiscoverAsk NoxConnect which services are available to this organization. The response lists what each service can do and the exact operations clients may call.
  2. 02InspectCheck whether the chosen service is enabled and healthy. Setup reports anything still needed, such as a GitHub or Slack connection.
  3. 03ConnectStart a provider connection through the API. A person opens the returned link and approves access in GitHub or Slack; the client never receives the provider credential.
  4. 04ConfigureRead the current settings and keep the returned revision. Send it back with a change so newer work cannot be overwritten accidentally.
  5. 05OperateCall only the operations advertised for the selected capability. Check the access and change-safety labels before every write or destructive action.

Quickstart

Discover your workspace

This request shape is for first-party Nox clients and user-approved automation whose secure runtime has received a Nox GitHub App OAuth access token. The hosted API does not currently issue third-party client credentials.

Do not extract a browser session token

Obtain access through a supported Nox sign-in or agent handoff. Never copy a token from browser storage, paste one into chat, place it in a URL, or log it. External applications should wait for a dedicated client-authorization flow.

terminal · list services
curl https://app.noxhere.com/api/v1/services \
  --header "Authorization: Bearer $GITHUB_TOKEN" \
  --header "X-Org: your-organization"
json · abbreviated response
{
  "apiVersion": 1,
  "organization": { "login": "your-organization" },
  "canConfigure": true,
  "services": [
    {
      "id": "noxfeed",
      "enabled": true,
      "setup": { "state": "ready" },
      "capabilities": [/* operations live here */]
    }
  ]
}

Authentication

Two headers define the caller

Authorization

Bearer <token> identifies the GitHub user. Member operations require organization membership.

Organization

X-Org: <login> selects the tenant. Server-side queries remain bound to this verified organization.

Operations advertise member, admin, public, or ingest_key authentication. Setup mutations and organization configuration require admin access. OAuth start operations may return a temporary userAction.url; do not log it or fetch it with an automated client. Give it to a human, then poll setup no more than once every five seconds.

Token lifecycle

First-party web clients refresh an expired access token through POST /api/auth/refresh. A rejected refresh requires a new sign-in. Third-party refresh credentials are not issued.

API hosts

Management and NoxCue ingest use https://app.noxhere.com. Origin-bound NoxSpot widget capture uses https://api.noxspot.dev; its operations declare that server in OpenAPI.

Service catalog

Clear ownership at every boundary

NoxConnect owns shared infrastructure. Each product owns the resources and behavior unique to its job.

NoxConnect

Foundation

Connections and shared workspace control: provider connections, identities, repositories, projects, and Slack routing.

ConnectionsPeopleRepositoriesShared deliveryGitHub + Slack

NoxTicket

Product

Planning and delivery workflow backed by GitHub issues, feature stages, specifications, and attachments.

FeaturesWorkflowSpecificationsDelivery

NoxFeed

Product

Current work and communication across issues, pull requests, engineering activity, posts, and release notes.

Current workActivityNarrativesDelivery

NoxSpot

Product

Website feedback capture with sites, origin-bound widget configuration, reports, screenshots, and delivery.

SitesWidgetReportsDelivery

NoxCue

Product

Customer health monitoring from bounded lifecycle and error events through metrics and scheduled summaries.

SourcesIngest keysHealth metricsDelivery

Control plane

The same shape for every service

Replace {service} with noxconnect, noxticket, noxfeed, noxspot, or noxcue.

Method and pathPurposeAccess
GET/api/v1/servicesDiscover all services, readiness, capabilities, and operations.Member
GET/api/v1/services/{service}Inspect one service and its links.Member
GET/api/v1/services/{service}/setupRead blockers, connections, and resumable setup sections.Member
GET/api/v1/services/{service}/healthRead required and optional health checks.Member
GET/api/v1/services/{service}/configRead owned configuration and its current revision.Member
PATCH/api/v1/services/{service}/configPartially update writable service configuration.Admin

Safe configuration

Read, revise, then write

Configuration updates use optimistic concurrency. Read the document, retain its ETag, then include that value in If-Match. A stale client receives 412 instead of overwriting newer work.

terminal · compare-and-swap update
# 1. Read the current config and response ETag
curl -i https://app.noxhere.com/api/v1/services/noxfeed/config \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "X-Org: your-organization"

# 2. Patch only owned fields using that revision
curl -X PATCH https://app.noxhere.com/api/v1/services/noxfeed/config \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "X-Org: your-organization" \
  -H 'If-Match: "current-revision"' \
  -H "Content-Type: application/json" \
  --data '{"projectScope":null}'

projectScope: null means all projects. Otherwise supply an active project ID returned by GET /api/projects; arbitrary strings are rejected.

Service-scoped

NoxConnect, NoxTicket, and NoxFeed expose strict writable fields in their service config response.

Resource-scoped

NoxSpot sites and NoxCue sources remain authoritative. Their service config is read-only and links to the correct child resources.

Operations

Follow the advertised contract

Every capability contains an operations array. Each operation declares a stable ID, HTTP method, path, authentication mode, and description. The catalog and OpenAPI document are tested for alignment.

json · capability operation
{
  "id": "patch_feed_config",
  "method": "PATCH",
  "path": "/api/v1/services/noxfeed/config",
  "authentication": "admin",
  "description": "Update project scope or release-notes prompt with If-Match."
}

The reference below is rendered directly from OpenAPI 3.1, so routes, methods, access levels, server overrides, and change-safety labels do not have to be copied into this page by hand. Older compatibility endpoints may still expose loosely typed response bodies; those are labelled as legacy JSON in the schema.

Loading the operation reference…

Errors

One predictable v1 envelope

json · error response
{
  "apiVersion": 1,
  "error": {
    "code": "revision_conflict",
    "message": "Settings changed concurrently; fetch config and retry",
    "details": { "currentRevision": "…" }
  }
}

All /api/v1/* errors, including authentication and organization failures raised before a handler runs, use this envelope. Compatibility routes under /api/* may still return { "error": "message" }.

401Missing or invalid authentication.
403The caller lacks required organization or admin access.
409The requested write conflicts with resource ownership or current state.
412The supplied configuration revision is stale. Read and retry.
422The request body fails the service's strict schema.
428A required If-Match header was not supplied.

Safety model

Defaults designed for automation

No raw provider tokens

Clients receive readiness and bounded actions, never GitHub or Slack credentials.

Explicit access

Every advertised operation declares the authentication level it needs.

Tenant-bound reads and writes

The verified organization identity scopes backing queries and mutations.

Conflict-safe changes

Revision checks protect configuration from accidental lost updates and races.

Human OAuth handoff

Agents may initiate a connection, but a human approves provider authorization.

Stable API contract

The versioned contract is served from app.noxhere.com/api/v1; service-specific sites use the same API without owning provider credentials.

Writes are not automatically retry-safe

Retry reads freely. Retry configuration only after reading the latest revision. Do not retry other writes unless the operation documents idempotency or you can confirm the first attempt failed before processing.

Destructive operations need confirmation

Disconnect, delete, archive, close, and revoke operations are marked destructive. Confirm the target and organization immediately before calling them.

Respect rate limits

On 429, wait for Retry-After when present and add jitter. Never poll setup more often than once every five seconds.

Capture one-time keys

A new NoxCue ingest key is returned once. Move it directly into an approved secret manager, never log it, and revoke it if delivery to storage is uncertain.