Skip to content
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
529c3ef
feat: add tdeploy open api
RicardoStoklosa Oct 21, 2025
c09a8e5
Merge branch 'feat/tdeploy-openapi' into beta
RicardoStoklosa Mar 23, 2026
4789ef9
change tdeploy api url
RicardoStoklosa Mar 23, 2026
bb86f1a
docs: update images and visual style for rounded borders
Freddyminu Apr 9, 2026
162cf7c
docs: improve content and structure across major documentation sections
Freddyminu Apr 9, 2026
a43a65f
docs: fix grammar, typos, and TagoIO naming consistency
Freddyminu Apr 9, 2026
d4b6f08
docs: add Tago AI documentation section
vitorfdl Apr 13, 2026
f13bb81
docs: update Tago AI screenshots
vitorfdl Apr 13, 2026
ec31c97
docs: update Tago AI documentation and images
Freddyminu Apr 14, 2026
2e0e310
remove unused images
Freddyminu Apr 14, 2026
a264d5b
Merge pull request #53 from tago-io/feat/tago-ai-docs
Freddyminu Apr 14, 2026
dd33710
docs: update images in dashboard documentation
Freddyminu Apr 14, 2026
63afca8
chore: update beta deploy trigger to feat/nextAdminDocUpdates branch
felipefdl Apr 14, 2026
a145dac
docs: document GeoJSON location format and add stationary device guid…
Freddyminu Apr 15, 2026
5674e82
Fixed formatting
Freddyminu Apr 15, 2026
a36e324
Merge branch 'deprecate-legacy-mqtt-v2' into beta
FabianoEger Apr 16, 2026
cd428bc
Merge branch 'deprecate-legacy-mqtt-v2' into beta
FabianoEger Apr 16, 2026
14a28c4
Merge branch 'deprecate-legacy-mqtt-v2' into beta
FabianoEger Apr 16, 2026
1f4a773
PR Fix
Freddyminu Apr 29, 2026
407b4af
Merge remote-tracking branch 'origin/beta' into feat/nextAdminDocUpdates
Freddyminu Apr 29, 2026
1d8622c
PR Fix
Freddyminu Apr 29, 2026
7731321
fixing broken link
Freddyminu Apr 29, 2026
dc4a1c4
Merge pull request #56 from tago-io/fix/mapLocationVariable
Freddyminu Apr 30, 2026
e100972
chore: rename and clean up tagoio static images
Freddyminu Jun 8, 2026
040ef7b
chore: apply npm run fmt to api-tdeploy docs
Freddyminu Jun 8, 2026
1b6e1b1
docs(tagoio): reorganize getting-started pages into topic sections
Freddyminu Jun 8, 2026
e781b44
docs(api): fix broken secrets link after section move
Freddyminu Jun 8, 2026
afcecbf
docs(tagoio): add TagoIO Academy tutorial page
Freddyminu Jun 15, 2026
16e46b6
Use beta branch for beta deploy workflow
vitorfdl Jun 18, 2026
8ccbbef
Merge branch 'main' of github.com:tago-io/docs into feat/nextAdminDoc…
vitorfdl Jun 18, 2026
4996a9d
fix: keep branch versions of tutorials to resolve broken image refs a…
vitorfdl Jun 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 4 additions & 8 deletions cdk/lambda/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,9 @@ exports.handler = async (event) => {
"/portal/en/kb/articles/163-touchtag-lorawan-everynet":
"/docs/tagoio/tutorials/touchtag-lorawan-everynet",
"/portal/en/kb/articles/164-building-solutions":
"/docs/tagoio/getting-started/building-solutions",
"/docs/tagoio/getting-started/getting-started",
"/portal/en/kb/articles/165-deploying-applications":
"/docs/tagoio/getting-started/deploying-applications",
"/docs/tagoio/getting-started/getting-started",
"/portal/en/kb/articles/166-adding-devices-with-connectors":
"/docs/tagoio/devices/adding-devices-with-connectors",
"/portal/en/kb/articles/167-mobile-apps":
Expand Down Expand Up @@ -418,11 +418,9 @@ exports.handler = async (event) => {
"/portal/en/kb/articles/65-environment-variables":
"/docs/tagoio/analysis/environment-variables",
"/portal/en/kb/articles/68-how-it-works":
"/docs/tagoio/getting-started/how-it-works",
"/docs/tagoio/getting-started/getting-started",
"/portal/en/kb/articles/7-beagle-bone-black":
"/docs/tagoio/tutorials/beagle-bone-black",
"/portal/en/kb/articles/75-thinxtra-xkit-for-sigfox":
"/docs/tagoio/tutorials/thinxtra-xkit-for-sigfox",
"/portal/en/kb/articles/8-raspberry-pi":
"/docs/tagoio/tutorials/raspberry-pi",
"/portal/en/kb/articles/83-connecting-zen15-power-using-smartthings-hub":
Expand Down Expand Up @@ -522,12 +520,10 @@ exports.handler = async (event) => {
"/portal/en/kb/articles/tagocore-open-source-documentation":
"/docs/tagocore/",
"/portal/en/kb/articles/tagoio-mcp-ai-powered-iot-data-integration":
"/docs/tagoio/getting-started/tagoio-mcp-ai-powered-iot-data-integration",
"/docs/tagoio/tago-ai/tagoio-mcp-ai-powered-iot-data-integration",
"/portal/en/kb/articles/tagoio-mqtt-relay":
"/docs/tagoio/integrations/networks/third-party-mqtt-broker",
"/portal/en/kb/articles/tags": "/docs/tagoio/getting-started/tags-system",
"/portal/en/kb/articles/ticket-severity-options":
"/docs/tagoio/support/ticket-severity-options",
"/portal/en/kb/articles/trigger-by-geofence":
"/docs/tagoio/actions/trigger-by-geofence",
"/portal/en/kb/articles/trigger-by-usage-alert":
Expand Down
221 changes: 221 additions & 0 deletions docs/api-tdeploy/create-mqtt-client.api.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
---
id: create-mqtt-client
title: "Create MQTT client"
description: "Create a new MQTT client for a specific service"
sidebar_label: "Create MQTT client"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/api-tdeploy/tagoio-deploy-api
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading as={"h1"} className={"openapi__heading"} children={"Create MQTT client"}></Heading>

<MethodEndpoint
method={"post"}
path={"/api/projects/{project_id}/services/{service_id}/clients"}
context={"endpoint"}
></MethodEndpoint>

Create a new MQTT client for a specific service

<Heading id={"request"} as={"h2"} className={"openapi-tabs__heading"} children={"Request"}></Heading>

<ParamsDetails
parameters={[
{
name: "project_id",
in: "path",
required: true,
description: "The project identifier",
schema: { type: "string", example: "507f1f77bcf86cd799439011" },
},
{
name: "service_id",
in: "path",
required: true,
description: "The service identifier",
schema: { type: "string", example: "service_mqtt_123" },
},
]}
></ParamsDetails>

<RequestSchema
title={"Body"}
body={{
required: true,
content: {
"application/json": {
schema: {
type: "object",
required: ["name"],
properties: {
name: { type: "string", description: "Client name", example: "IoT Device 1", minLength: 1, maxLength: 255 },
username: {
type: "string",
nullable: true,
description: "MQTT username (optional)",
example: "device_user",
minLength: 1,
maxLength: 255,
},
password: {
type: "string",
nullable: true,
description: "Password for the client (optional)",
example: "secure_password",
minLength: 8,
},
},
title: "CreateClientRequest",
},
},
},
}}
></RequestSchema>

<StatusCodes
id={undefined}
label={undefined}
responses={{
"200": {
description: "Created client information",
content: {
"application/json": {
schema: {
type: "object",
properties: {
client_id: {
type: "string",
description: "Unique client identifier",
example: "507f1f77bcf86cd799439011",
},
name: { type: "string", description: "Human-readable client name", example: "IoT Device 1" },
username: { type: "string", nullable: true, description: "MQTT username", example: "device_user" },
password: { type: "boolean", description: "Whether client has a password set", example: true },
certificate_fingerprint: {
type: "string",
nullable: true,
description: "Client certificate fingerprint",
example: "SHA256:abc123...",
},
certificate_metadata: {
type: "object",
nullable: true,
properties: {
subject: { type: "string", description: "Certificate subject", example: "CN=device1.example.com" },
issuer: { type: "string", description: "Certificate issuer", example: "CN=CA" },
serial_number: { type: "string", description: "Certificate serial number", example: "12345" },
not_before: {
type: "string",
format: "date-time",
description: "Certificate valid from",
example: "2023-01-01T00:00:00Z",
},
not_after: {
type: "string",
format: "date-time",
description: "Certificate valid until",
example: "2024-01-01T00:00:00Z",
},
},
title: "CertificateMetadata",
},
created_at: {
type: "string",
format: "date-time",
description: "When the client was created",
example: "2023-01-01T00:00:00Z",
},
updated_at: {
type: "string",
format: "date-time",
description: "When the client was last updated",
example: "2023-01-01T00:00:00Z",
},
},
title: "ClientInfo",
},
},
},
},
"400": {
description: "Bad request",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Invalid request parameters", code: "BAD_REQUEST" },
},
},
},
"401": {
description: "Authentication required",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Authentication required", code: "UNAUTHORIZED" },
},
},
},
"403": {
description: "Access denied",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Access denied", code: "FORBIDDEN" },
},
},
},
"404": {
description: "Resource not found",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Resource not found", code: "NOT_FOUND" },
},
},
},
}}
></StatusCodes>
124 changes: 124 additions & 0 deletions docs/api-tdeploy/delete-mqtt-client.api.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
---
id: delete-mqtt-client
title: "Delete MQTT client"
description: "Delete an existing MQTT client"
sidebar_label: "Delete MQTT client"
hide_title: true
hide_table_of_contents: true
api: eJztV1tv2zYU/ivEedkGyJadS53oLZvdzVibZKnzssQIaPHYZiuTCkkFMQT99+FQF0uxM7TZ0Kf6IVbEc/n4natzEGhjI1MntYIIxpigQ8YVw2dpnVQr9vGv2YzFiUTlIADHVxaiO/Bvf/NvLcwDsBhnRrotRHc5XBv9GWPXm+kvqCC6mxfzAFJu+AYdGutlFN8gRJCWog9SQACSIKTcrSEAg4+ZNCggcibD4AXO2RpZpcqkQOXkUqKBAGy8xg2HKAe3TcmBdUaqFQSAz3yTJvTqdDBaDpej0SJenr2Lxej8/OT4fDAcQlEEDTCL5knG+BZgleq3A6t9bh6dexgeHXcAlSF4C55S89vhVB5LIHPyZFOtLFpSOxoM6KvrrUwIJnwWCWazOEZrl1mSbCGAWCtHWRTlwNM0kTEntfCzJd18H5JeUHwhoCRJ0ThZeq6stgQXWifIVRs8cVH4TwAng+E+1IvMrYmPEgRrWPzfYKIx2hwiuItjQmJsg9byFXbov0GrMxMjU9qxpc6UgILQCfxaq162bfLyavbw/ur2ckyWBDouE3voJi+oEkLSI0+YvxSrNQPgzdF16/Il+QE46bxbj4ZcNkgaev41DnRTuL28uJ39cXUz/XsyhjqgxwcC6rOCCVTyRxi/fxj32PfBe3918+t0PJ5cNpE72Y/cAYZ+hO/7hu+VEIgXcMsgbtCttYAIyj5PnNMoiiDkqQyrsWzDfDfbi7AabTbMd4O1CMsJY8O8GW4FzSY0T/WakJkEIlg7l9ooJPt9gWmit33HV7ov9R5N10aLLPa9pLQDNEN3ZqIwTHTMk7W2LjobnB/tWfhAx41ya7f5RDlXptWLDaeJHU/ln7jdjx3rKDC35o5JyzIlHzNkTrOtziiixEyf/Y4KDac9jDkvv9gy7guMFjIvWtn7ybKUr7APQb0meIV6RVgjF37cP/d26Zf2TnF4dHxyyntiNOC9EzwSvcXZseidxgN/8G50dk67B0i11P52VQrN+EpPr9jYh4BdXE/3b3o9ZUsqJa74itB2Verk6N+re3WRJIzv2j8KhkqkWipn6znAOHviiRQlD/17uhnlRuls2B/0B1Wv4LHvFRULlddPWZpqQ7XUzaM6eYoAEhmjstjS/Tid7SnoFFVZIX1tVmGlZEOSJaJSbd2Gq5aVapPubs8drvJdj/uKvbvML4fPLkwTLhVh9xjzqvruKPnK/ucphgCiznZdlyAddLbbqgrp/W7JnAdAJUJ283zBLd6apCjo9WOGhvb8eQBP3Ei+oNS4y0FIS88CoiVP7MtNtH3bn2+qKf8Le3WRP3jhusoUldgTTzL6DwL4gtvubwmq+TfjObi/vwFPi+T/hOfQ/v4GOLvYFvMiqHsDRa48pxGeupbm3tylZtg0//Hkw2Q2oemTUfq1W+AX3wKrB3JwEFjdqUrv9JdYOiia52VjLYpGvjx6VaPpfKU08TMviuIfYC8d9g==
sidebar_class_name: "delete api-method"
info_path: docs/api-tdeploy/tagoio-deploy-api
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading as={"h1"} className={"openapi__heading"} children={"Delete MQTT client"}></Heading>

<MethodEndpoint
method={"delete"}
path={"/api/projects/{project_id}/services/{service_id}/clients/{client_id}"}
context={"endpoint"}
></MethodEndpoint>

Delete an existing MQTT client

<Heading id={"request"} as={"h2"} className={"openapi-tabs__heading"} children={"Request"}></Heading>

<ParamsDetails
parameters={[
{
name: "project_id",
in: "path",
required: true,
description: "The project identifier",
schema: { type: "string", example: "507f1f77bcf86cd799439011" },
},
{
name: "service_id",
in: "path",
required: true,
description: "The service identifier",
schema: { type: "string", example: "service_mqtt_123" },
},
{
name: "client_id",
in: "path",
required: true,
description: "The client identifier",
schema: { type: "string", example: "client_123" },
},
]}
></ParamsDetails>

<RequestSchema title={"Body"} body={undefined}></RequestSchema>

<StatusCodes
id={undefined}
label={undefined}
responses={{
"200": {
description: "Client deleted successfully",
content: {
"application/json": { schema: { type: "object", properties: { success: { type: "boolean", example: true } } } },
},
},
"401": {
description: "Authentication required",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Authentication required", code: "UNAUTHORIZED" },
},
},
},
"403": {
description: "Access denied",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Access denied", code: "FORBIDDEN" },
},
},
},
"404": {
description: "Resource not found",
content: {
"application/json": {
schema: {
type: "object",
properties: {
error: { type: "string", description: "Error message", example: "Resource not found" },
code: { type: "string", description: "Error code", example: "NOT_FOUND" },
details: { type: "object", description: "Additional error details", additionalProperties: true },
},
title: "Error",
},
example: { error: "Resource not found", code: "NOT_FOUND" },
},
},
},
}}
></StatusCodes>
Loading