Workera · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Workera API
7 actions
7 updates
documentation
extends
../openapi/workera-api-openapi.json
Generated by API Evangelist
Written by API Evangelist tooling for Workera's API. It is a proposal applied on top of the contract, not a document Workera publishes.
What the actions change
x-base-urlsx-key-issuancex-api-evangelist-profiletagsdescriptionx-header-namex-value-formatx-self-serve
Targets 6
$.info
$
$.components.securitySchemes.authorization
$.paths['/api/v1/audit_events'].get
$.paths['/api/v1/benchmarks'].post
$.components
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Workera API
version: 1.0.0
extends: ../openapi/workera-api-openapi.json
x-generated: '2026-09-04'
x-method: generated
x-source: >-
Derived from the first-party OpenAPI at https://skills.workera.ai/api/docs/openapi plus the prose
sections of its own info.description. This overlay adds structure that is already stated in the
document's prose but is not machine-readable, and adds API Evangelist's own tagging. It never changes
the meaning of an operation, and the original spec is untouched in openapi/.
actions:
- target: $.info
description: >-
Record the two published base URLs and the contact route for key issuance, both of which are in
prose only.
update:
x-base-urls:
- https://skills.workera.ai/api/v1/
- https://skills.workera.ai/api/v2/
x-key-issuance: Enterprise customers only, via the Workera CSM. No self-serve signup.
x-api-evangelist-profile: https://apis.io/provider/workera
- target: $
description: >-
Declare the tags the operations already reference. The source document uses eight tag names but
declares no top-level tags array, so no tag carries a description.
update:
tags:
- name: Ping
description: Connectivity and credential check.
- name: Domains
description: >-
Capabilities. "Domain" is the wire name and "capability" is the current product name for the
same object.
- name: Capability
description: Alias tag applied alongside Domains on the same operations.
- name: Programs
description: >-
Named initiatives that bundle capabilities with target scores, due dates and an initiative type.
- name: Benchmarks
description: >-
Aggregate cohort statistics per capability — enterprise average, enterprise 75th percentile and
big-tech average.
- name: Scores
description: Objectively assessed capability scores (0-300) for learners, v2.
- name: Self Ratings
description: Learner self-declared scores, kept deliberately separate from assessed scores.
- name: Audit Events
description: >-
SIEM-compatible enterprise audit log. Requires the audit_events API-key scope; returns 403
without it.
- target: $.components.securitySchemes.authorization
description: Document the header name, value format and scope model, which the prose states.
update:
description: >-
Company-scoped API key sent as `authorization: Bearer YOUR_KEY`. Issued by a Workera CSM to
enterprise customers. Keys may be restricted by scope; an endpoint whose scope is missing returns
403. HTTPS is required.
x-header-name: authorization
x-value-format: Bearer YOUR_KEY
x-self-serve: false
x-known-scopes:
- audit_events
- target: $.paths['/api/v1/audit_events'].get
description: Mark the scope this operation requires; the requirement is documented only in prose.
update:
x-required-scope: audit_events
x-siem: true
- target: $.paths['/api/v1/benchmarks'].post
description: >-
Flag that this POST is query-shaped. It is the only non-GET operation in the contract and it has no
side effect, which is why the API's reversibility and idempotency posture is `na` rather than absent.
update:
x-safe: true
x-write: false
x-note: >-
Accepts a domain_identifiers filter body and returns aggregate benchmark data. Creates and
changes nothing.
- target: $.components
description: >-
Record the pagination, rate-limit and error conventions as machine-readable extensions, and flag the
schemas that have no path.
update:
x-conventions:
pagination:
style: cursor
params:
- limit
- next_page_after
- order
default_limit: 10
max_limit: 100
response_fields:
- data
- has_more
- next_page
rate_limit_headers:
- x-ratelimit-limit
- x-ratelimit-remaining
- x-ratelimit-reset
rate_limit_status: 429
error_envelope:
- code
- message
- type
error_media_type: application/json
rfc9457: false
x-undocumented-schemas:
count: 41
note: >-
41 of 56 declared component schemas are referenced by no path — the Ambient coaching-agent and
Coach/recommendation response contracts. Recorded, not invented; see
data-model/workera-data-model.yml.
- target: $
description: >-
Attach the event surface, which the source document describes in prose and payload examples but does
not model.
update:
x-events:
derived_asyncapi: ../asyncapi/workera-events-asyncapi.yml
signature_header: X-Workera-Signature
signature_algorithm: HMAC-SHA256
events:
- score_updated
- assessment_started
- assessment_completed
- program_completed
- self_score_completed
- appeal_approved
x-mcp:
endpoint: https://skills.workera.ai/mcp
auth: oauth2
manifest: ../mcp/workera-mcp.yml