Harness · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Harness Token API
9 actions
9 updates
phrasing
extends
openapi/harness-token-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Harness's API. It is a proposal applied on top of the contract, not a document Harness publishes.
What the actions change
x-apievangelist-phrasing
Targets 9
$.info
$.paths['/ng/api/token'].post
$.paths['/ng/api/token/{identifier}'].put
$.paths['/ng/api/token/{identifier}'].delete
$.paths['/ng/api/token/aggregate'].get
$.paths['/ng/api/token/rotate/{identifier}'].post
$.paths['/ng/api/token/validate'].post
$.paths['/sto/api/v2/token'].get
$.paths['/v1/token'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Harness Token API
version: 1.0.0
extends: openapi/harness-token-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 8
- target: $.paths['/ng/api/token'].post
update:
x-apievangelist-phrasing:
intent: Create an API key token
effect: write
questions:
- How do I create a new token under an API key in Harness?
- Can I set an expiry date when creating a token?
instructions:
- text: Create token {name} with identifier {identifier} under API key {api_key}.
slots:
name: requestBody.name
identifier: requestBody.identifier
api_key: requestBody.apiKeyIdentifier
- text: Create a token {identifier} named {name} valid until {valid_to}.
slots:
identifier: requestBody.identifier
name: requestBody.name
valid_to: requestBody.validTo
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/token/{identifier}'].put
update:
x-apievangelist-phrasing:
intent: Update an existing token
effect: write
questions:
- How do I rename or change the description of an existing token?
- Can I extend the validity window of a token I already created?
instructions:
- text: Update token {identifier} to have name {name}.
slots:
identifier: path.identifier
name: requestBody.name
- text: Change the expiry of existing token {identifier} to {valid_to}.
slots:
identifier: path.identifier
valid_to: requestBody.validTo
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/token/{identifier}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a token
effect: destructive
questions:
- How do I delete a token so it can no longer be used?
- What do I need to identify a token's parent and API key to delete it?
instructions:
- text: Delete token {identifier} from API key {api_key} owned by {parent}.
slots:
identifier: path.identifier
api_key: query.apiKeyIdentifier
parent: query.parentIdentifier
- text: Remove {type} token {identifier} under key {api_key} for {parent}.
slots:
type: query.apiKeyType
identifier: path.identifier
api_key: query.apiKeyIdentifier
parent: query.parentIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/token/aggregate'].get
update:
x-apievangelist-phrasing:
intent: List tokens across API keys
effect: read
questions:
- Which tokens exist for my service account API keys?
- Can I list only tokens that are still active?
instructions:
- text: List all {type} tokens.
slots:
type: query.apiKeyType
- text: Show active {type} tokens under API key {api_key}.
slots:
type: query.apiKeyType
api_key: query.apiKeyIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/token/rotate/{identifier}'].post
update:
x-apievangelist-phrasing:
intent: Rotate a token
effect: write
questions:
- How do I rotate a token without creating a new one from scratch?
- Can I schedule when the old token expires after rotation?
instructions:
- text: Rotate token {identifier} under API key {api_key} for {parent}.
slots:
identifier: path.identifier
api_key: query.apiKeyIdentifier
parent: query.parentIdentifier
- text: Rotate {type} token {identifier} of key {api_key} owned by {parent}, expiring the old one at {timestamp}.
slots:
type: query.apiKeyType
identifier: path.identifier
api_key: query.apiKeyIdentifier
parent: query.parentIdentifier
timestamp: query.rotateTimestamp
method: generated
generated: '2026-09-26'
- target: $.paths['/ng/api/token/validate'].post
update:
x-apievangelist-phrasing:
intent: Validate a token
effect: read
questions:
- Is this Harness token still valid for my account?
- Can I check a token before using it in automation?
instructions:
- text: Validate a token for account {account}.
slots:
account: query.accountIdentifier
- text: Check whether my token is valid.
method: generated
generated: '2026-09-26'
- target: $.paths['/sto/api/v2/token'].get
update:
x-apievangelist-phrasing:
intent: Issue a cross-service token for STO
effect: write
questions:
- How do I exchange my Harness token for a Security Testing Orchestration cross-service token?
- Can I request an STO token for a specific audience?
instructions:
- text: Issue an STO cross-service token for audience {audience} using Harness token {harness_token}.
slots:
audience: query.audience
harness_token: header.X-Harness-Token
- text: Get a security testing token for account {account} from {harness_token}.
slots:
account: query.accountId
harness_token: header.X-Harness-Token
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/token'].get
update:
x-apievangelist-phrasing:
intent: Issue a cross-service token (v1)
effect: write
questions:
- Is there a v1 endpoint for issuing a cross-service token?
- What does the older /v1/token endpoint return for my account?
instructions:
- text: Issue a cross-service token from the v1 endpoint for account {account}.
slots:
account: header.Harness-Account
- text: Call the legacy v1 token issuer for {account}.
slots:
account: header.Harness-Account
method: generated
generated: '2026-09-26'