The Things Network / The Things Stack · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Things Stack — Application Server App As API

9 actions 9 updates phrasing extends openapi/the-things-network-appas-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for The Things Network / The Things Stack's API. It is a proposal applied on top of the contract, not a document The Things Network / The Things Stack publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 9

$.info
$.paths['/as/applications/{application_ids.application_id}/devices/{device_id}/down'].get
$.paths['/as/applications/{application_id}/mqtt-connection-info'].get
$.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/decode'].post
$.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/encode'].post
$.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/push'].post
$.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/replace'].post
$.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/decode'].post
$.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/simulate'].post

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 Things Stack — Application Server App As API
  version: 1.0.0
extends: openapi/the-things-network-appas-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['/as/applications/{application_ids.application_id}/devices/{device_id}/down'].get
  update:
    x-apievangelist-phrasing:
      intent: List a device's queued downlinks
      effect: read
      questions:
      - What downlink messages are currently waiting to be sent to my device?
      - Can I see the downlink queue for an end device?
      instructions:
      - text: List the queued downlinks for device {device_id} in application {application_id}.
        slots:
          device_id: path.device_id
          application_id: path.application_ids.application_id
      - text: Show what's pending in the downlink queue of {device_id} in {application_id}.
        slots:
          device_id: path.device_id
          application_id: path.application_ids.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{application_id}/mqtt-connection-info'].get
  update:
    x-apievangelist-phrasing:
      intent: Get MQTT connection info for an application
      effect: read
      questions:
      - How do I connect an MQTT client to my application's data?
      - What host and username should my MQTT integration use for an application?
      instructions:
      - text: Get the MQTT connection details for application {application_id}.
        slots:
          application_id: path.application_id
      - text: Show how to connect an MQTT client to application {application_id}.
        slots:
          application_id: path.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/decode'].post
  update:
    x-apievangelist-phrasing:
      intent: Decode a downlink payload with a formatter
      effect: read
      questions:
      - Can I test how a payload formatter decodes a downlink for my device?
      - How do I turn raw downlink bytes back into decoded fields?
      instructions:
      - text: Decode downlink {downlink} for device {device_id} in application {application_id}.
        slots:
          downlink: requestBody.downlink
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      - text: Run formatter {formatter} to decode a downlink for {device_id} in {application_id}.
        slots:
          formatter: requestBody.formatter
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/encode'].post
  update:
    x-apievangelist-phrasing:
      intent: Encode a downlink payload with a formatter
      effect: read
      questions:
      - How can I check what bytes my payload formatter produces for a downlink?
      - Can I encode decoded downlink fields into a binary payload without sending it?
      instructions:
      - text: Encode downlink {downlink} for device {device_id} in application {application_id}.
        slots:
          downlink: requestBody.downlink
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      - text: Use formatter {formatter} to encode a downlink for {device_id} in {application_id}.
        slots:
          formatter: requestBody.formatter
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/push'].post
  update:
    x-apievangelist-phrasing:
      intent: Queue downlinks to a device
      effect: write
      questions:
      - How do I send a downlink message to my end device?
      - Can I add downlinks to the end of the queue without removing existing ones?
      instructions:
      - text: Push downlinks {downlinks} to device {device_id} in application {application_id}.
        slots:
          downlinks: requestBody.downlinks
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      - text: Append a downlink to the queue for {device_id} in {application_id}.
        slots:
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/replace'].post
  update:
    x-apievangelist-phrasing:
      intent: Replace or clear a device's downlink queue
      effect: write
      questions:
      - How do I clear all pending downlinks for a device?
      - Can I swap out the whole downlink queue with new messages?
      instructions:
      - text: Replace the downlink queue of device {device_id} in application {application_id} with {downlinks}.
        slots:
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
          downlinks: requestBody.downlinks
      - text: Empty the downlink queue for {device_id} in {application_id}.
        slots:
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/decode'].post
  update:
    x-apievangelist-phrasing:
      intent: Decode an uplink payload with a formatter
      effect: read
      questions:
      - Can I test my uplink payload formatter against sample bytes?
      - How do I see what fields an uplink decodes to?
      instructions:
      - text: Decode uplink {uplink} for device {device_id} in application {application_id}.
        slots:
          uplink: requestBody.uplink
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      - text: Run formatter {formatter} on an uplink for {device_id} in {application_id}.
        slots:
          formatter: requestBody.formatter
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/simulate'].post
  update:
    x-apievangelist-phrasing:
      intent: Simulate an uplink to test integrations
      effect: write
      questions:
      - How do I test my webhook or integration without a real device sending data?
      - Can I fake an uplink message from an end device?
      instructions:
      - text: Simulate uplink message {uplink_message} from device {device_id} in application {application_id}.
        slots:
          uplink_message: requestBody.uplink_message
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      - text: Send a simulated upstream message for {device_id} in {application_id} to test integrations.
        slots:
          device_id: path.end_device_ids.device_id
          application_id: path.end_device_ids.application_ids.application_id
      method: generated
      generated: '2026-09-26'