# 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 — End Device Registry Device Repository API version: 1.0.0 extends: openapi/the-things-network-devicerepository-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: 20 - target: $.paths['/dr/applications/{application_ids.application_id}/brands'].get update: x-apievangelist-phrasing: intent: List device brands as seen by an application effect: read questions: - Which device manufacturers can I pick from when adding devices to my Things Stack application? - Can I search the brand list by name within one application's view of the Device Repository? instructions: - text: List the device brands available to application {application_id}. slots: application_id: path.application_ids.application_id - text: Search brands matching {search} for application {application_id}. slots: search: query.search application_id: path.application_ids.application_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{brand_id}'].get update: x-apievangelist-phrasing: intent: Get a device brand in an application context effect: read questions: - What details does the repository hold about one brand when I look it up through my application? - Can I fetch a single manufacturer's profile scoped to a specific application? instructions: - text: Show brand {brand_id} as seen from application {application_id}. slots: brand_id: path.brand_id application_id: path.application_ids.application_id - text: Fetch only {field_mask} for brand {brand_id} via application {application_id}. slots: field_mask: query.field_mask brand_id: path.brand_id application_id: path.application_ids.application_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{brand_id}/models'].get update: x-apievangelist-phrasing: intent: List a brand's models for an application effect: read questions: - Which device models does one manufacturer offer, as listed for my application? - Can I page through a single brand's models from inside an application context? instructions: - text: List the models of brand {brand_id} for application {application_id}. slots: brand_id: path.brand_id application_id: path.application_ids.application_id - text: Search brand {brand_id}'s models for {search} in application {application_id}. slots: brand_id: path.brand_id search: query.search application_id: path.application_ids.application_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{brand_id}/models/{model_id}'].get update: x-apievangelist-phrasing: intent: Get a device model in an application context effect: read questions: - What does the Device Repository say about one specific model when accessed through my application? - Can I read a model's spec sheet scoped to an application ID? instructions: - text: Show model {model_id} of brand {brand_id} for application {application_id}. slots: model_id: path.model_id brand_id: path.brand_id application_id: path.application_ids.application_id - text: Get the {field_mask} fields of model {model_id} by {brand_id}, scoped to application {application_id}. slots: field_mask: query.field_mask model_id: path.model_id brand_id: path.brand_id application_id: path.application_ids.application_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder'].get update: x-apievangelist-phrasing: intent: Get a model's downlink decoder for an application effect: read questions: - Where can I get the payload formatter that decodes downlinks for a device model in my application? - Is the downlink decoder tied to firmware version and band when fetched per application? instructions: - text: Get the downlink decoder for {brand_id} {model_id} firmware {firmware_version} band {band_id} in application {application_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id application_id: path.application_ids.application_id - text: For application {application_id}, get the downlink decoder of {brand_id} {model_id} hardware {hardware_version}, firmware {firmware_version}, band {band_id}. slots: application_id: path.application_ids.application_id brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder'].get update: x-apievangelist-phrasing: intent: Get a model's downlink encoder for an application effect: read questions: - How can my application get the formatter that encodes downlink messages for a given device model? - Does the downlink encoder differ by hardware version when looked up for an application? instructions: - text: Get the downlink encoder for {brand_id} {model_id} firmware {firmware_version} band {band_id} in application {application_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id application_id: path.application_ids.application_id - text: For application {application_id}, get the downlink encoder of {brand_id} {model_id} hardware {hardware_version}, firmware {firmware_version}, band {band_id}. slots: application_id: path.application_ids.application_id brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder'].get update: x-apievangelist-phrasing: intent: Get a model's uplink decoder for an application effect: read questions: - Can my application pull the ready-made uplink payload decoder for the sensor model I use? - Which uplink decoder applies to a model's specific firmware and band within my application? instructions: - text: Get the uplink decoder for {brand_id} {model_id} firmware {firmware_version} band {band_id} in application {application_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id application_id: path.application_ids.application_id - text: For application {application_id}, get the uplink decoder of {brand_id} {model_id} hardware {hardware_version}, firmware {firmware_version}, band {band_id}. slots: application_id: path.application_ids.application_id brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template'].get update: x-apievangelist-phrasing: intent: Get an end device template by model for an application effect: read questions: - Can I get a pre-filled end device template for a model and firmware to onboard into my application? - What registration template does the repository give my application for a given band and firmware? instructions: - text: Get the end device template for {brand_id} {model_id} firmware {firmware_version} band {band_id} in application {application_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id application_id: path.application_ids.application_id - text: Build an onboarding template in application {application_id} for {brand_id} {model_id} hardware {hardware_version}, firmware {firmware_version}, band {band_id}. slots: application_id: path.application_ids.application_id brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/models'].get update: x-apievangelist-phrasing: intent: List all device models for an application effect: read questions: - Which device models across every brand can I browse for my application? - Can I filter the application-scoped model catalog by brand or a search term? instructions: - text: List every device model available to application {application_id}. slots: application_id: path.application_ids.application_id - text: Search all models for {search} in application {application_id}. slots: search: query.search application_id: path.application_ids.application_id method: generated generated: '2026-09-26' - target: $.paths['/dr/applications/{application_ids.application_id}/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template'].get update: x-apievangelist-phrasing: intent: Get a template by vendor profile for an application effect: read questions: - Can my application get an end device template from a vendor ID and vendor profile ID instead of a model? - How do I turn a LoRaWAN vendor profile into a device template inside one application? instructions: - text: Get the template for vendor {vendor_id} profile {vendor_profile_id} in application {application_id}. slots: vendor_id: path.end_device_profile_ids.vendor_id vendor_profile_id: path.end_device_profile_ids.vendor_profile_id application_id: path.application_ids.application_id - text: Resolve LoRaWAN vendor profile {vendor_profile_id} from vendor {vendor_id} into a band {band_id} template for app {application_id}. slots: application_id: path.application_ids.application_id vendor_id: path.end_device_profile_ids.vendor_id vendor_profile_id: path.end_device_profile_ids.vendor_profile_id band_id: query.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/brands'].get update: x-apievangelist-phrasing: intent: List brands in the global Device Repository effect: read questions: - What LoRaWAN device manufacturers are in The Things Stack Device Repository? - Can I sort or search the full brand catalog without naming an application? instructions: - text: List all brands in the Device Repository. - text: Search the global brand catalog for {search}. slots: search: query.search method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{brand_id}'].get update: x-apievangelist-phrasing: intent: Get a brand from the global repository effect: read questions: - Where do I look up one manufacturer's profile in the shared device catalog? - What information is stored for a brand without an application context? instructions: - text: Look up brand {brand_id} in the global Device Repository. slots: brand_id: path.brand_id - text: Get just the {field_mask} of catalog brand {brand_id}. slots: field_mask: query.field_mask brand_id: path.brand_id method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{brand_id}/models'].get update: x-apievangelist-phrasing: intent: List a brand's models in the global repository effect: read questions: - Which models does a given manufacturer have in the global repository? - Can I search one brand's model list by keyword outside any application? instructions: - text: List the global catalog's models for brand {brand_id}. slots: brand_id: path.brand_id - text: Find models of brand {brand_id} matching {search} in the global catalog. slots: brand_id: path.brand_id search: query.search method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{brand_id}/models/{model_id}'].get update: x-apievangelist-phrasing: intent: Get a device model from the global repository effect: read questions: - What specs does the global Device Repository list for a particular device model? - Can I read one model's details straight from the shared catalog? instructions: - text: Look up model {model_id} from brand {brand_id} in the global repository. slots: model_id: path.model_id brand_id: path.brand_id - text: Get only {field_mask} for catalog model {model_id} of brand {brand_id}. slots: field_mask: query.field_mask model_id: path.model_id brand_id: path.brand_id method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder'].get update: x-apievangelist-phrasing: intent: Get a model's downlink decoder from the global catalog effect: read questions: - Where is the downlink decoder for a device model published in the shared repository? - Can I download a model's downlink decoder without referencing an application? instructions: - text: Fetch the global downlink decoder for {brand_id} {model_id} firmware {firmware_version} on band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id - text: Download the catalog downlink decoder for {brand_id} {model_id} hardware {hardware_version} firmware {firmware_version} band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder'].get update: x-apievangelist-phrasing: intent: Get a model's downlink encoder from the global catalog effect: read questions: - Is there a shared downlink encoder script for my device model and firmware? - Can I get the downlink encoder for a hardware version from the global catalog? instructions: - text: Fetch the global downlink encoder for {brand_id} {model_id} firmware {firmware_version} on band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id - text: Download the catalog downlink encoder for {brand_id} {model_id} hardware {hardware_version} firmware {firmware_version} band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder'].get update: x-apievangelist-phrasing: intent: Get a model's uplink decoder from the global catalog effect: read questions: - How do I find the official uplink payload decoder for a device model? - Does the global repository publish uplink decoders per firmware version and frequency band? instructions: - text: Fetch the global uplink decoder for {brand_id} {model_id} firmware {firmware_version} on band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id - text: Download the catalog uplink decoder for {brand_id} {model_id} hardware {hardware_version} firmware {firmware_version} band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template'].get update: x-apievangelist-phrasing: intent: Get an end device template by model from the catalog effect: read questions: - Can I generate a device registration template from the global catalog for a model and firmware? - What end device template does the shared repository hold for a model on a given band? instructions: - text: Fetch the global end device template for {brand_id} {model_id} firmware {firmware_version} on band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id - text: Download the catalog end device template for {brand_id} {model_id} hardware {hardware_version} firmware {firmware_version} band {band_id}. slots: brand_id: path.version_ids.brand_id model_id: path.version_ids.model_id hardware_version: query.version_ids.hardware_version firmware_version: path.version_ids.firmware_version band_id: path.version_ids.band_id method: generated generated: '2026-09-26' - target: $.paths['/dr/models'].get update: x-apievangelist-phrasing: intent: List all models in the global Device Repository effect: read questions: - What device models across all manufacturers are in the global Device Repository? - Can I narrow the full model catalog to one brand with a query filter? instructions: - text: List every model in the global Device Repository. - text: List global catalog models filtered to brand {brand_id}. slots: brand_id: query.brand_id method: generated generated: '2026-09-26' - target: $.paths['/dr/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template'].get update: x-apievangelist-phrasing: intent: Get a template by vendor profile from the catalog effect: read questions: - Can I resolve a LoRaWAN vendor ID and vendor profile ID to a device template in the global repository? - What template does the shared catalog return for a vendor profile? instructions: - text: Fetch the global template for vendor {vendor_id} profile {vendor_profile_id}. slots: vendor_id: path.end_device_profile_ids.vendor_id vendor_profile_id: path.end_device_profile_ids.vendor_profile_id - text: Get the catalog template for vendor {vendor_id} profile {vendor_profile_id} on band {band_id}. slots: vendor_id: path.end_device_profile_ids.vendor_id vendor_profile_id: path.end_device_profile_ids.vendor_profile_id band_id: query.version_ids.band_id method: generated generated: '2026-09-26'