Harness · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Harness Secrets API

15 actions 15 updates phrasing extends openapi/harness-secrets-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.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 15

$.info
$.paths['/ng/api/v2/secrets/count'].get
$.paths['/ng/api/v2/secrets'].get
$.paths['/ng/api/v2/secrets'].post
$.paths['/ng/api/v2/secrets/files'].post
$.paths['/ng/api/v2/secrets/yaml'].post
$.paths['/ng/api/v2/secrets/{identifier}'].get
$.paths['/ng/api/v2/secrets/{identifier}'].put
$.paths['/ng/api/v2/secrets/{identifier}'].delete
$.paths['/ng/api/v2/secrets/list/secrets'].post
$.paths['/ng/api/v2/secrets/list'].post
$.paths['/ng/api/v2/secrets/files/{identifier}'].put
$.paths['/ng/api/v2/secrets/{identifier}/yaml'].put
$.paths['/ng/api/v2/secrets/validate'].post
$.paths['/ng/api/v2/secrets/validateUniqueIdentifier/{identifier}'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Harness Secrets API
  version: 1.0.0
extends: openapi/harness-secrets-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: 14
- target: $.paths['/ng/api/v2/secrets/count'].get
  update:
    x-apievangelist-phrasing:
      intent: Count the secrets in a scope
      effect: read
      questions:
      - How many secrets exist under a given org or project?
      - Can I get just a secret count without listing them?
      instructions:
      - text: Count the secrets under scope {parent_id}.
        slots:
          parent_id: query.parentUniqueId
      - text: Tell me how many secrets account {account} has in scope {parent_id}.
        slots:
          account: query.accountIdentifier
          parent_id: query.parentUniqueId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets'].get
  update:
    x-apievangelist-phrasing:
      intent: List secrets with query-string filters
      effect: read
      questions:
      - What secrets are stored in my Harness project?
      - Can I list secrets from every sub-scope under an org at once?
      - Which secrets live in a particular secret manager?
      instructions:
      - text: List the secrets in project {project} using a simple GET filter.
        slots:
          project: query.projectIdentifier
      - text: Show secrets of type {type} whose name matches {search}.
        slots:
          type: query.type
          search: query.searchTerm
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a secret
      effect: write
      questions:
      - How do I store a new text secret at the project level?
      - Can I create a secret that only I can see?
      instructions:
      - text: Create secret {secret} in project {project}.
        slots:
          secret: requestBody.secret
          project: query.projectIdentifier
      - text: Add a private secret {secret} for my use only.
        slots:
          secret: requestBody.secret
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/files'].post
  update:
    x-apievangelist-phrasing:
      intent: Upload a file as a secret
      effect: write
      questions:
      - Can I upload a certificate or key file as a secret?
      - What's the way to store a whole file as an encrypted secret?
      instructions:
      - text: Upload {file} as a new secret file.
        slots:
          file: requestBody.file
      - text: Create a secret file from {file} in project {project}.
        slots:
          file: requestBody.file
          project: query.projectIdentifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/yaml'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a secret from YAML
      effect: write
      questions:
      - Can I define a new secret using a YAML document?
      - Is there a YAML-based way to create secrets for config-as-code?
      instructions:
      - text: Create a secret from this YAML definition {secret}.
        slots:
          secret: requestBody.secret
      - text: Add the YAML-defined secret {secret} to project {project}.
        slots:
          secret: requestBody.secret
          project: query.projectIdentifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/{identifier}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a secret by its identifier
      effect: read
      questions:
      - Can I look up the details of one secret by its ID?
      - What metadata is stored for a specific secret?
      instructions:
      - text: Get secret {identifier}.
        slots:
          identifier: path.identifier
      - text: Show the details of secret {identifier} in project {project}.
        slots:
          identifier: path.identifier
          project: query.projectIdentifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/{identifier}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a secret
      effect: write
      questions:
      - How do I rotate the value of an existing text secret?
      - Can I change an existing secret's settings with a JSON body?
      instructions:
      - text: Update secret {identifier} with {secret}.
        slots:
          identifier: path.identifier
          secret: requestBody.secret
      - text: Replace the stored definition of secret {identifier} in project {project}.
        slots:
          identifier: path.identifier
          project: query.projectIdentifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/{identifier}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a secret
      effect: destructive
      questions:
      - Can I force-delete a secret that is still referenced somewhere?
      - What's the way to permanently remove a secret?
      instructions:
      - text: Delete secret {identifier}.
        slots:
          identifier: path.identifier
      - text: Force delete secret {identifier} even if it's in use.
        slots:
          identifier: path.identifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/list/secrets'].post
  update:
    x-apievangelist-phrasing:
      intent: Search secrets by name, tags or description
      effect: read
      questions:
      - Can I find secrets by their tags or description?
      - Which secrets have a name that contains a given word?
      instructions:
      - text: Find secrets named {name}.
        slots:
          name: requestBody.secretName
      - text: Search secrets tagged {tags} with description matching {description}.
        slots:
          tags: requestBody.tags
          description: requestBody.description
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/list'].post
  update:
    x-apievangelist-phrasing:
      intent: List secrets with a filter body by ID or category
      effect: read
      questions:
      - Can I fetch a batch of secrets by a list of identifiers?
      - Which secrets belong to a given source category?
      instructions:
      - text: Fetch the secrets with identifiers {identifiers}.
        slots:
          identifiers: requestBody.identifiers
      - text: List secrets in source category {category} via the filter body.
        slots:
          category: requestBody.sourceCategory
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/files/{identifier}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a secret file
      effect: write
      questions:
      - Can I upload a new version of a file stored as a secret?
      - How would I swap out an expired certificate held in a secret file?
      instructions:
      - text: Replace secret file {identifier} with {file}.
        slots:
          identifier: path.identifier
          file: requestBody.file
      - text: Upload new contents for secret file {identifier}.
        slots:
          identifier: path.identifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/{identifier}/yaml'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a secret using YAML
      effect: write
      questions:
      - Can I edit an existing secret by sending YAML?
      - Is there a YAML update path for secrets I manage as code?
      instructions:
      - text: Update secret {identifier} from YAML {secret}.
        slots:
          identifier: path.identifier
          secret: requestBody.secret
      - text: Apply the YAML {secret} to existing secret {identifier}.
        slots:
          secret: requestBody.secret
          identifier: path.identifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/validate'].post
  update:
    x-apievangelist-phrasing:
      intent: Validate that a secret works
      effect: read
      questions:
      - Can I test whether a secret resolves correctly before using it?
      - Is there a check that a stored secret reference is valid?
      instructions:
      - text: Validate secret {identifier} of type {type}.
        slots:
          identifier: query.identifier
          type: requestBody.type
      - text: Check that secret {identifier} is usable.
        slots:
          identifier: query.identifier
      method: generated
      generated: '2026-09-26'
- target: $.paths['/ng/api/v2/secrets/validateUniqueIdentifier/{identifier}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a secret identifier is not taken
      effect: read
      questions:
      - Is a secret ID I want to use already taken?
      - Can I confirm an identifier is unique before creating a secret?
      instructions:
      - text: Check whether secret identifier {identifier} is available.
        slots:
          identifier: path.identifier
      - text: Confirm {identifier} is unique in project {project}.
        slots:
          identifier: path.identifier
          project: query.projectIdentifier
      method: generated
      generated: '2026-09-26'