Skip to main content

Client Job API

The client API is owner-scoped to the authenticated client.

Dashboard

GET /api/v1/client/dashboard/

Returns the client-oriented dashboard projection.

GitHub App state

GET /api/v1/client/github/app/status/
POST /api/v1/client/github/app/install/start/
POST /api/v1/client/github/app/install/complete/
POST /api/v1/client/github/app/installations/{installation_id}/refresh/
POST /api/v1/client/github/app/installations/{installation_id}/disconnect/

Repository issue browsing is scoped to repository access already granted through the GitHub App:

GET /api/v1/client/github/app/repositories/{repository_access_id}/issues/

The issue-preview route validates and normalizes a selected GitHub issue before it becomes a job draft:

POST /api/v1/client/github/issue-preview/

Job drafts

GET /api/v1/client/job-drafts/
POST /api/v1/client/job-drafts/
GET /api/v1/client/job-drafts/{id}/
PUT /api/v1/client/job-drafts/{id}/
PATCH /api/v1/client/job-drafts/{id}/
DELETE /api/v1/client/job-drafts/{id}/

Draft state is separate from funded onchain job state.

Typical draft progression:

DRAFT
→ READY
→ LOCKED
→ FUNDING
→ FUNDED

Review

POST /api/v1/client/job-drafts/{id}/review/

Validates repository readiness and prepares the job for the immutable funding snapshot.

Exact USDC approval challenge

POST /api/v1/client/job-drafts/{id}/approval-challenge/

Creates the Circle challenge for the exact USDC allowance needed by the funded job.

Funding challenge

POST /api/v1/client/job-drafts/{id}/funding-challenge/

Creates the Circle contract-execution challenge for the server-encoded createJob call.

The browser does not supply an arbitrary contract target/calldata pair for Veyra to execute.

Funded jobs

GET /api/v1/client/jobs/
GET /api/v1/client/jobs/{onchain_job_id}/

The lookup key for funded jobs is the Arc onchain job ID.

Contextual client action

POST /api/v1/client/jobs/{onchain_job_id}/action-challenge/

Veyra reads current job state and builds only the client action currently allowed by the contract lifecycle, such as cancellation or an eligible refund.

Execution retry

Current releases can expose a bounded execution retry action for a job whose worker execution needs control-plane recovery:

POST /api/v1/client/jobs/{onchain_job_id}/retry-execution/

Retry does not rewrite the original funded task/policy commitments.

Public issue explorer

Public issue/explore routes live under:

GET /api/v1/public/issues/
GET /api/v1/public/issues/facets/
GET /api/v1/public/issues/{reference}/

These are discovery surfaces, not privileged GitHub credential endpoints.