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.