GET /v1/links/{id}
SDK · v1 · Produção · Revisado em · Markdown
Operação pública/SDK existente, separada da Platform API administrativa. Guia funcional · Índice dos 13 endpoints · Schemas navegáveis · JSON Schema. Não envie Authorization administrativo. Tokens/capacidades transitórias dos exemplos são fictícios.
GET /v1/links/{id}
Seção intitulada “GET /v1/links/{id}”Resolver metadados públicos. Contrato público existente, separado de administração. Detecção exige opt-in; não chamar sua rota Edge interna diretamente. Capacidades e validade são revalidadas no servidor.
Base de exemplo: https://edge.agilink.invalid/functions/v1/api.
| Parâmetro | Local | Obrigatório |
|---|---|---|
id |
path | sim |
appId |
query | sim |
Sem corpo de requisição. Associações também aceitam HEAD com corpo de resposta vazio.
curl --request GET 'https://edge.agilink.invalid/functions/v1/api/v1/links/go.example.com~-a~-produto?appId=app_loja'Resposta 200: Sucesso; exemplos fictícios. ACKs de telemetria devem ser lidos por evento.
{ "version": 1, "link": { "id": "go.example.com~-a~-produto", "appId": "app_loja", "domain": "go.example.com", "prefix": "a", "slug": "produto", "appPath": "produto/123", "title": "Produto", "description": null, "imageUrl": null, "webUrl": "https://shop.example.com/produto/123", "webOnly": false, "parameters": { "sku": "123" } }}Erros documentados: 400, 403, 404, 503. Erros do Worker podem ter corpo vazio. Etapas de recuperação podem responder 200 {"accepted":false}; ACK HTTP não significa conteúdo exibido. Consulte os schemas e o guia para condições, validade, retry e envelopes.
JavaScript / TypeScript
Seção intitulada “JavaScript / TypeScript”const response = await fetch("https://edge.agilink.invalid/functions/v1/api/v1/links/go.example.com~-a~-produto?appId=app_loja", { method: "GET" });if (!response.ok) throw new Error('HTTP ' + response.status);const result = await response.json();// Confira accepted e o ACK de cada evento. Não registre tokens transitórios.import jsonimport requestsresponse = requests.request("GET", "https://edge.agilink.invalid/functions/v1/api/v1/links/go.example.com~-a~-produto?appId=app_loja", timeout=30)response.raise_for_status()result = response.json()# Confira accepted/ACK, sem registrar tokens transitórios.Campos, limites e semântica
Seção intitulada “Campos, limites e semântica”Os schemas abaixo descrevem obrigatoriedade, tipos, defaults, enums e limites; referências apontam para components.schemas do contrato baixável. Omitir opcionais usa o comportamento do contrato; null só é aceito onde declarado. A API pública não usa os envelopes, If-Match ou Idempotency-Key administrativos. Eventos e etapas de recuperação usam seus próprios IDs, deduplicação e capacidade transitória. Não repita um resgate como se fosse leitura: consulte o estado e os limites do ciclo de recuperação. A resolução não gera clique administrativo; telemetria é client_reported. Associação nativa publicada exige verificação em aparelho. Sem paginação administrativa; requests não concedem acesso de gerenciamento.
Request schema
Seção intitulada “Request schema”{ "description": "Sem corpo; parâmetros na URL conforme acima."}Response schema
Seção intitulada “Response schema”{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://agilink.io/contracts/native-links/v1/resolution.schema.json", "title": "Agilink resolution v1", "type": "object", "required": [ "version", "link" ], "additionalProperties": false, "properties": { "version": { "const": 1 }, "link": { "type": "object", "required": [ "id", "appId", "domain", "prefix", "slug", "appPath", "title", "description", "imageUrl", "webUrl", "webOnly", "parameters" ], "additionalProperties": false, "properties": { "id": { "type": "string" }, "appId": { "type": "string" }, "domain": { "type": "string" }, "prefix": { "type": "string" }, "slug": { "type": "string" }, "appPath": { "type": [ "string", "null" ], "maxLength": 2048 }, "title": { "type": [ "string", "null" ], "maxLength": 1000 }, "description": { "type": [ "string", "null" ], "maxLength": 4000 }, "imageUrl": { "type": [ "string", "null" ], "maxLength": 4096 }, "webUrl": { "type": [ "string", "null" ], "maxLength": 4096 }, "webOnly": { "type": "boolean" }, "parameters": { "type": "object" } }, "allOf": [ { "if": { "properties": { "webOnly": { "const": true } } }, "then": { "properties": { "webUrl": { "type": "string", "minLength": 1 } } } } ] } }}Headers: Content-Type application/json nas respostas JSON. Erros aplicáveis são os listados acima e podem ter corpo vazio; 429 exige respeitar Retry-After quando fornecido, sem tentativas ilimitadas. Não trate HTTP 200/ACK como confirmação de conteúdo exibido, instalação ou detecção certa.