---
title: "Turvallinen linkkien jakaminen kehittäjille | LinkPilot-blogi"
url: https://uselinkpilot.com/fi/blog/secure-link-sharing-for-developers
description: "Käytännön opas kehitystiimeille: milloin kertakäyttölinkkiä kannattaa käyttää, miten sen luonti skriptataan ja miten se liitetään perehdytykseen ja CI:hin."
lang: fi
---

Tietoturva (https://uselinkpilot.com/fi/blog/category/security)

# Turvallinen linkkien jakaminen kehittäjille

Käytännön opas kehitystiimeille: milloin kertakäyttölinkkiä kannattaa käyttää, miten sen luonti skriptataan ja miten se liitetään perehdytykseen ja CI:hin.

W. Miller (https://uselinkpilot.com/fi/author/w-miller)26. toukokuuta 2026 · Päivitetty 22. lokakuuta 2026 · Tietoa LinkPilotista (https://uselinkpilot.com/fi/about)

Kehittäjän työssä salaisuuksien jakaminen tulee yleensä vastaan kolmessa paikassa: **perehdytyksessä**, **luovutuksessa toimittajalle** ja **häiriötilanteissa**. Tässä on kehittäjän näkökulma siihen, milloin kertakäyttölinkki kannattaa ottaa käyttöön, milloin sen voi jättää väliin ja miten sen luonti skriptataan niin, ettei salaisuus vuoda matkalla komentohistoriaan. Jos haluat ensin kokeilla mekanismia, ilmainen kertakäyttöisten salaisten linkkien luontityökalu (https://uselinkpilot.com/fi/tools/free-secret-link-generator) toimii ilman tiliä.

## Milloin kehittäjän kannattaa käyttää kertakäyttölinkkiä?

Kun luovutuksen ainakin toisessa päässä on ihminen eikä arvon pidä säilyä missään luovutuksen jälkeen. Tavallisimmat tapaukset:

- Uuden kehittäjän perehdytys ja hänen ensimmäiset tunnuksensa.
- Väliaikaisen pääkäyttäjän salasanan jakaminen häiriötilanteessa.
- Toimittajan tai alihankkijan tunnisteen luovuttaminen, kun sen ei pidä jäädä holviisi.
- Tunnuksen vaihto, kun vanhan arvon pitää lakata toimimasta pian.
- API-avaimen lähettäminen asiakkaalle, jolle loit sen.

## Milloin kertakäyttölinkkiä ei kannata käyttää

- **Koneelta koneelle kulkevat salaisuudet.** Niihin oikea perusratkaisu on CI:n ympäristömuuttujat (esimerkiksi GitHub Actions -salaisuudet (https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions)), Kubernetes Secrets (https://kubernetes.io/docs/concepts/configuration/secret/) ja Vaultin dynaamiset tunnukset. Linkki on tarkoitettu siihen, kun ihminen vie tiedon näihin järjestelmiin.
- **Tiimin pitkäikäiset tunnukset.** Ne kuuluvat salasanojen hallintaohjelmaan.
- **Julkiset asetukset.** Älä naamioi asetuksia salaisuudeksi, jos ne eivät ole salaisia. Käytä tavallista linkkiä.

Raja kulkee näin: jos siirron molemmissa päissä on kone, käytä alustasi salaisuusvarastoa. Jos ainakin toisessa päässä on ihminen, kertakäyttölinkki on yleensä siistein ratkaisu.

| Tilanne | Oikea ratkaisu |
| --- | --- |
| Uuden kehittäjän ensimmäiset tunnukset | Kertakäyttöinen salainen linkki |
| CI-putki tarvitsee julkaisutunnisteen ajon aikana | CI:n salaisuusvarasto / ympäristömuuttujat |
| Podi tarvitsee tietokannan salasanan | K8s-secret / external secrets operator |
| Tiimin tunnus, jota viisi ihmistä käyttää päivittäin | Salasanojen hallintaohjelma (jaettu holvi) |
| Asiakas tarvitsee hänelle luodun API-avaimen | Kertakäyttöinen salainen linkki |
| Salaisuutta tarvitaan git-repossa | Ei koskaan: viittaa salaisuusvarastoon ja lisää skannaus CI:hin |

## Skriptaus

LinkPilotissa on REST API (kaikissa paketeissa, myös Free-paketissa). Salaisuuden luonti skriptistä näyttää tältä:

```bash
LP_KEY=lp_live_...

URL=$(curl -sS https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": "'"$NEW_DB_PASSWORD"'",
    "expires_in": 3600,
    "burn_after_read": true,
    "passphrase": "'"$ONBOARDING_PASSPHRASE"'"
  }' | jq -r '.url')

echo "Secret link: $URL"
```

Ohjaa URL-osoite siihen toimituskanavaan, jota jo käytät: Slackin yksityisviestiin, sähköpostiin tai perehdytystyökalusi webhookiin.

### Sisältö pois prosessilistasta

Yllä olevassa koodissa on klassinen virhe: kun sisältö upotetaan valitsimeen `-d`, se päätyy curlin komentoriville, jolta kuka tahansa paikallinen käyttäjä voi lukea sen komennolla `ps` pyynnön ollessa käynnissä. Rakenna JSON sen sijaan `jq`-työkalulla (https://jqlang.org/manual/) ja syötä se vakiosyötteestä curlin valitsimella `-d @-` (https://curl.se/docs/manpage.html#-d):

```bash
set -euo pipefail

jq -n --arg payload "$NEW_DB_PASSWORD" \
      --arg pass "$ONBOARDING_PASSPHRASE" \
      '{payload: $payload, expires_in: 3600,
        burn_after_read: true, passphrase: $pass}' |
curl -sS https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -H "Content-Type: application/json" \
  -d @- | jq -r '.url'
```

Kolme tapaa, joiden pitäisi olla selkäytimessä:

- Arvot tulevat ympäristömuuttujista tai salaisuuksien hallinnan CLI-työkalusta, eikä niitä koskaan kirjoiteta interaktiiviseen komentotulkkiin, josta ne jäävät historiaan.
- Skripti tulostaa _linkin_, ei koskaan sisältöä.
- Rivi `set -euo pipefail` estää epäonnistunutta API-kutsua välittämästä tyhjää URL-osoitetta huomaamatta seuraavaan vaiheeseen.

## Perehdytyksen malli

Toimintatapa, joka toimii hyvin uusille kehittäjille ensimmäisenä päivänä:

1. Perehdytysskripti luo käyttäjätilit ja hakee kertakäyttöiset tunnukset.
2. Skripti luo jokaiselle tunnukselle oman salaisen linkin, jonka voimassaoloaika on 4 tuntia ja jolla on yhteinen salalause.
3. Skripti lähettää sähköpostin, jossa ovat kaikki linkit, ja salalauseen Slackin yksityisviestillä.
4. Kehittäjä avaa jokaisen linkin ja kopioi tunnuksen salasanojen hallintaohjelmaansa.
5. Kaikki, mitä ei ole avattu työpäivän loppuun mennessä, mitätöidään ja lähetetään uudelleen hänen tahtiinsa.

Miksi juuri nämä asetukset: 4 tunnin voimassaoloaika riittää tavalliseen ensimmäiseen aamupäivään, eivätkä tunnukset jää yöksi voimaan. Salalause kulkee toista kanavaa pitkin, joten edelleen lähetetystä tai väärään osoitteeseen menneestä sähköpostista ei ole haittaa. Koska linkit tuhoutuvat lukemisen jälkeen, kehittäjän postilaatikossa on päivän päätteeksi vain toimimattomia URL-osoitteita.

Kerro uudelle työntekijälle suoraan: _”jokainen linkki toimii kerran, tallenna arvo salasanojen hallintaohjelmaan ennen kuin suljet välilehden.”_ Yleisin perehdytyksen virhe on vastaanottaja, joka lukee salaisuuden, sulkee välilehden ja olettaa voivansa palata siihen myöhemmin.

## Vaihdon toimintaohje

Jaetun tietokantasalasanan vaihto, kun vastaanottajana on alihankkija tai työkaveri:

1. Luo uusi salasana ja ota se käyttöön lähdejärjestelmässä (tietokanta, pilvikonsoli tai mikä tahansa virallinen lähde).
2. Päivitä ensin omat käyttökohteesi, kuten CI:n holvi, K8s-secret ja sovelluksen asetukset, jotta mikään ei hajoa ihmisten välisen luovutuksen aikana.
3. Luo uudelle arvolle kertakäyttölinkki: tuhoutuu lukemisen jälkeen, voimassaoloaika 1 tunti, salalause.
4. Toimita linkki ja salalause eri kanavia pitkin.
5. Tarkista avaustapahtuma tarkastuslokista. Eikö linkkiä avattu ennen vanhenemista? Mitätöi se ja lähetä uusi. Älä koskaan lähetä samaa linkkiä uudelleen.
6. Varmista, että vanha tunnus on poistettu käytöstä lähteessä.

Jokainen vaihto saa oman linkkinsä. Linkit ovat tarkoituksella toisistaan riippumattomia. Toimituksessa se on etu, hallinnassa puute, joten vaihtojen _aikataulu_ kuuluu hallintaohjelmaan tai toimintaohjeeseen eikä linkkityökaluun.

## Häiriötilanteet

Häiriötilanteessa tunnus pitää usein vaihtaa ja uusi arvo jakaa nopeasti muutamalle selvittäjälle. Älä liitä sitä häiriökanavaan. Kanavan keskustelu tallennetaan jälkikäteistä analyysia varten, ja salaisuus päätyy vientitiedostoon, retrospektiivin muistioon ja jokaiseen niistä eteenpäin kulkevaan säilytysjärjestelmään.

- Vaihda tunnus lähdejärjestelmässä.
- Luo salainen linkki, jonka voimassaoloaika on 30 minuuttia.
- Lähetä linkki kanavaan ja lähetä salalause yksityisviestillä.
- Varmista häiriön jälkeen, että linkki on tuhoutunut tai mitätöity.

Jälkianalyysissa on silloin toimimaton URL-osoite eikä voimassa olevaa pääkäyttäjän salasanaa. Lisäksi tarkastuslokista saa ilmaiseksi tarkan merkinnän aikajanan läpikäyntiin: ”tunnus annettu uudelleen klo 14:32, avattu klo 14:33”.

Yksi huomio linkkien esikatselusta: chat-sovellukset hakevat liitetyt URL-osoitteet esikatselun luomiseksi. Hyvin suunniteltu salainen linkki kestää tämän, koska esikatselu tekee `GET`-pyynnön ja näyttäminen vaatii erillisen `POST`-pyynnön. Koko mekanismi on kuvattu artikkelissa linkkiskannerit ja kertakäyttöiset salaisuudet (https://uselinkpilot.com/fi/blog/link-scanners-and-one-time-secrets). Jos arvioit työkalua, testaa tämä ennen häiriötilannetta, älä sen aikana.

## Mitä tarkastusloki kertoo?

Sen, avattiinko salaisuus, milloin ja suunnilleen mistä, ja yrittikö joku väärää salalausetta. Jokaisella LinkPilot-salaisuudella on tapahtumien aikajana: created, viewed, failed_passphrase, burned, expired, revoked. Avauksista tallennetaan aikaleima, karkea sijainti, kun se on saatavilla, selaimen käyttäjäagentti ja IP-osoitteen tiiviste (SHA-256 päivittäin vaihtuvalla suolalla; alkuperäistä IP-osoitetta ei tallenneta koskaan). Käytännössä tästä saa kolme vastausta, joihin skriptit ja toimintaohjeet voivat luottaa:

- **Toimitusvahvistus:** viewed-tapahtuma tarkoittaa, että luovutus tapahtui.
- **Poikkeamien havaitseminen:** failed_passphrase-tapahtumien sarja tai avaus, jota et tunnista, on merkki siitä, että tunnus pitää vaihtaa heti.
- **Selkeä merkintä tarkastuksia varten:** ”toimitettu kerran, avattu kerran, tuhoutunut” on lause, josta tarkastajat pitävät.

## Rajoitukset: mitä linkit eivät ratkaise

- **Ne eivät ole holvi.** Kertakäyttölinkki ei hallitse jatkuvaa pääsyä, vaihtojen aikatauluja eikä luetteloa siitä, kenellä on mitäkin.
- **Linkki on avain.** LinkPilot salaa tekstisisällön selaimessasi eikä koskaan saa avainta, mutta avain kulkee linkin #-merkin jälkeisessä osassa. Kuka tahansa, joka saa koko linkin, voi siis lukea salaisuuden, ja jos linkki katoaa, salaisuutta ei voi palauttaa. Liitetiedostot salataan samalla tavalla, mutta niiden nimiä ja kokoja ei salata. Lyhyellä voimassaoloajalla ja lukemisen jälkeisellä tuhoutumisella on silti merkitystä. _Päivitys 29. syyskuuta 2026: tässä kohdassa luki aiemmin ”niitä ei salata päästä päähän”, mikä piti paikkansa siihen päivään asti._ Yksityiskohdat ovat sivulla tietoturva-arkkitehtuuri (https://uselinkpilot.com/fi/security-architecture).
- **Ne eivät korjaa koodiin levinneitä salaisuuksia.** Repoihin kovakoodatut avaimet vaativat skannausta ja vaihtamista, eivät parempaa toimitustapaa.
- **Ne eivät suojaa sitä, mitä vastaanottajan päässä tapahtuu.** Kun ihminen on lukenut arvon, oleta sen olevan kaikkialla, minne hän sen laittoi.

Kokeile ilmaiseksi, ei rekisteröitymistä

### Kertakäyttöisen salaisen linkin luontityökalu

Jaa salasana tai muistiinpano linkillä, joka avautuu vain kerran.

Avaa työkalu (https://uselinkpilot.com/fi/tools/free-secret-link-generator)

## Lue myös

- Näin jaat API-avaimet turvallisesti: https://uselinkpilot.com/fi/blog/how-to-share-api-keys-securely
- Vanhenevat linkit: miksi lyhyt voimassaoloaika on tärkeä: https://uselinkpilot.com/fi/blog/expiring-links-security
- LinkPilotin tietoturva-arkkitehtuuri: https://uselinkpilot.com/fi/security-architecture

## Lähteet

- GitHub Docs, Using secrets in GitHub Actions (https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions).
- Kubernetes, Secrets (https://kubernetes.io/docs/concepts/configuration/secret/).
- jq, Manual (https://jqlang.org/manual/).
- curl, Manual page, `-d, --data` (https://curl.se/docs/manpage.html#-d).

## Työkalut tähän artikkeliin

Kertakäyttöisen salaisen linkin luontityökalu

Jaa salasana tai muistiinpano linkillä, joka avautuu vain kerran.
https://uselinkpilot.com/fi/tools/free-secret-link-generator

Itsetuhoutuva viesti

Lähetä muistiinpano, joka katoaa, kun se on luettu kerran.
https://uselinkpilot.com/fi/tools/burn-after-read-secret

Vanhenevan linkin luontityökalu

Luo linkkejä, jotka lakkaavat toimimasta asettamanasi aikana.
https://uselinkpilot.com/fi/tools/temporary-link

## Usein kysytyt kysymykset

### Voinko luoda salaisia linkkejä skriptillä?

### Kuuluvatko salaisuudet CI:ssä ympäristömuuttujiin?

### Miten vaihdot hoidetaan skripteissä?

### Jääkö salaisuus komentohistoriaan tai prosessilistaan?

### Miten varmistan, että vastaanottaja todella sai tunnuksen?

## LinkPilot lähettää salaisen linkin, joka katoaa, kun se on avattu.

Salataan selaimessasi, näytetään kerran ja tuhotaan sitten. Tiliä ei tarvita.

Luo salainen linkki (https://uselinkpilot.com/fi/tools/free-secret-link-generator)

## Lue seuraavaksi

Tietoturva

### Salaiset linkit vai salasanojen hallintaohjelma

Salasanojen hallintaohjelma säilyttää tiimin tunnukset, kertakäyttölinkki vie yhden tunnuksen yhdelle ihmiselle kerran. Useimmat tiimit tarvitsevat molempia.
https://uselinkpilot.com/fi/blog/secret-links-vs-password-managers

Tietoturva

### Linkkiskannerit ja kertakäyttöiset salaisuudet

GET-pyynnöstä tuhoutuva kertakäyttölinkki kuolee Slackin tai sähköpostiyhdyskäytävän esikatseluun. Palauta GET:lle metatiedot, tuhoa vasta näytettäessä.
https://uselinkpilot.com/fi/blog/link-scanners-and-one-time-secrets

Tietoturva

### API-avainten jakaminen turvallisesti

Älä liitä API-avainta chattiin tai sähköpostiin. Lähetä selaimessasi salattu kertakäyttölinkki, joka tuhoutuu avattaessa, ja vaihda jo liitetyt avaimet.
https://uselinkpilot.com/fi/blog/how-to-share-api-keys-securely

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Etusivu",
        "item": "https://uselinkpilot.com/fi"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blogi",
        "item": "https://uselinkpilot.com/fi/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Turvallinen linkkien jakaminen kehittäjille",
        "item": "https://uselinkpilot.com/fi/blog/secure-link-sharing-for-developers"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/fi/blog/secure-link-sharing-for-developers#article",
    "headline": "Turvallinen linkkien jakaminen kehittäjille",
    "description": "Käytännön opas kehitystiimeille: milloin kertakäyttölinkkiä kannattaa käyttää, miten sen luonti skriptataan ja miten se liitetään perehdytykseen ja CI:hin.",
    "inLanguage": "fi",
    "datePublished": "2026-05-26",
    "dateModified": "2026-10-22",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Person",
      "@id": "https://uselinkpilot.com/author/w-miller#person",
      "name": "W. Miller",
      "url": "https://uselinkpilot.com/fi/author/w-miller",
      "worksFor": {
        "@type": "Organization",
        "name": "LinkPilot",
        "url": "https://uselinkpilot.com"
      }
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/fi/blog/secure-link-sharing-for-developers"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Voinko luoda salaisia linkkejä skriptillä?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Voit. LinkPilotissa on REST API (kaikissa paketeissa, myös Free-paketissa), joten salaisuuksia voi luoda perehdytysskripteistä, CI-ajoista tai sisäisistä työkaluista. Jokainen kutsu palauttaa URL-osoitteen, jonka voit ohjata sähköpostiin, Slackiin tai tekstiviestiin."
        }
      },
      {
        "@type": "Question",
        "name": "Kuuluvatko salaisuudet CI:ssä ympäristömuuttujiin?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Kuuluvat. Ne ovat edelleen oikea perusratkaisu CI:n ajonaikaisiin tarpeisiin. Käytä salaisia linkkejä ihmiseltä ihmiselle tapahtuvaan luovutukseen (kun kehittäjä saa ensimmäisen tunnuksen, jonka hän vie CI:n holviin), älä koneelta koneelle kulkevaan reittiin."
        }
      },
      {
        "@type": "Question",
        "name": "Miten vaihdot hoidetaan skripteissä?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Luo uusi tunnus lähdejärjestelmässä, vie se kertakäyttölinkkiin, lähetä linkki ja anna vastaanottajan tallentaa tunnus omaan hallintaohjelmaansa tai CI:n holviin. Älä käytä samaa linkkiä useassa vaihdossa: jokainen vaihto saa oman linkkinsä."
        }
      },
      {
        "@type": "Question",
        "name": "Jääkö salaisuus komentohistoriaan tai prosessilistaan?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Se on huolimattoman skriptauksen todellinen riski: komentorivin argumentit näkyvät muille paikallisille käyttäjille ps-komennolla niin kauan kuin komento on käynnissä, ja interaktiiviset komentotulkit kirjoittavat historiatiedostoja. Välitä sisältö vakiosyötteestä (curl -d @-) ja pidä API-avaimet ympäristömuuttujissa, ei koskaan komennon valitsimissa."
        }
      },
      {
        "@type": "Question",
        "name": "Miten varmistan, että vastaanottaja todella sai tunnuksen?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Katso salaisuuden tarkastusloki. Aikaleimallinen avaus- tai tuhoutumistapahtuma vahvistaa toimituksen. Jos salaisuus vanhenee ilman avausta, toimitus epäonnistui: mitätöi linkki ja lähetä uusi sen sijaan, että arvailisit."
        }
      }
    ],
    "inLanguage": "fi"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```