Przejdź do treści

Biblioteki klienckie

Oficjalnym klientem jest onetime-ruby, który obsługuje API v1 i v2, wszystkie domeny regionalne oraz niestandardowe bazowe adresy URL.

Wszystko pozostałe na tej stronie jest utrzymywane przez społeczność. Większość z tych bibliotek powstała przed API v2 i domenami regionalnymi, więc zwykle wywołują one przestarzałe punkty końcowe v1 pod adresem onetimesecret.com — sprawdź notatkę o statusie przy każdej pozycji i upewnij się, że biblioteka działa z Twoim regionem lub instancją self-hosted, zanim się na niej oprzesz.

Język Biblioteka Ostatnia aktywność¹ Domena regionalna / niestandardowa
Ruby onetime-ruby (oficjalna) 2026-06 ✅ wszystkie regiony + niestandardowy bazowy adres URL
Go go-onetimesecret 2026-05 host US
Python onetimesecret-cli 2024-11 opcja regionu US / EU
Go otsgo 2024-03 nieudokumentowane
PowerShell OneTimeSecret 2021-06 niestandardowy bazowy adres URL
Bash onetimesecret-bash 2020-05 niestandardowy host
Python py_onetimesecret 2019-05 ❌ (z czasów Pythona 2)
C# OneTimeSharp 2018-05 ❌
Java onetime-java 2014-06 tylko adres URL instancji self-hosted
Perl Net::OneTimeSecret 2012-02 ❌

¹ Najnowszy commit lub wydanie w momencie ostatniego audytu (2026-07).

Strona GitHub - onetime-ruby autor: Delano — oficjalny klient, aktywnie utrzymywany (ostatni commit 2026-06). Obsługuje API v1 (przestarzałe) i v2, domeny regionalne oraz niestandardowe bazowe adresy URL. Wymaga Ruby 3.1+, brak zależności w czasie wykonywania.

require 'onetime/api'
api = Onetime::API.new('YOUR_EMAIL', 'YOUR_OTS_APIKEY')
options = {
secret: 'Jazz, jazz and more jazz.',
recipient: 'example@onetimesecret.com',
ttl: 7200
}
ret = api.post('/share', options)
puts ret['secret_key']

Strona GitHub - onetimesecret-cli autor: slashpass — utrzymywana przez społeczność (ostatni commit 2024-11). Obsługuje opcję regionu (us / eu).

from onetimesecret import OneTimeSecretCli
cli = OneTimeSecretCli(ONETIMESECRET_USER, ONETIMESECRET_KEY)
cli.create_link("secret") # return a link like https://onetimesecret.com/secret/xxxxxxxxxxx

Strona GitHub - py_onetimesecret autor: Vladislav Stepanov — nieutrzymywana (ostatni commit 2019; poniższy przykład jest w Pythonie 2). Używa przestarzałego API v1 wyłącznie pod adresem onetimesecret.com.

from onetimesecret import OneTimeSecret
o = OneTimeSecret("YOUR_EMAIL", "YOUR_OTS_APIKEY")
secret = o.share(u"test")
print o.retrieve_secret(secret["secret_key"])
# {u'secret_key': u'dtr7ixukiolpx1i4i87kahmhyoy2q65',
# u'value': u'test'}

Net::OneTimeSecret na CPAN autor: Kyle Dawkins — nieutrzymywana (ostatnie wydanie 0.04, 2012-02). Powstała przed API v2 i domenami regionalnymi.

#!/usr/bin/env perl
use Net::OneTimeSecret;
# Note: replace these with yours in order for this to work!
my $customerId = 'YOUR_EMAIL';
my $testApiKey = 'YOUR_OTS_APIKEY';
my $api = Net::OneTimeSecret->new( $customerId, $testApiKey );
my $result = $api->shareSecret( 'Jazz, jazz and more jazz.',
passphrase => 'thepassword',
recipient => 'kyle@shoffle.com',
ttl => 7200,
);
printf( "%s\n", $result->{secret_key} );
my $secret = $api->retrieveSecret( $result->{secret_key}, passphrase => "thepassword" );
printf( "%s\n", $secret->{value} );

Strona GitHub - onetime-java autor: Marcin Pawlowski — nieutrzymywana (ostatni commit 2014-06). Przyjmuje adres URL instancji, więc może działać z instancją self-hosted, ale powstała przed API v2.

OneTimeSecret ots = new OneTimeSecretRestImpl(
"https://path/to/ots/instance",
"ots-username",
"ots-apikey");
GenerateResponse generateResponse = ots.generate(
new GenerateRequest.Builder()
.withPassphrase("supersecret")
.build());
RetrieveResponse retrieveResponse = ots.retrieve(
new RetrieveRequest.Builder()
.withSecretKey(generateResponse.getSecretKey())
.withPassphrase("supersecret")
.build());
assertEquals(generateResponse.getValue(), retrieveResponse.getValue());

Strona GitHub - OneTimeSharp autor: Vladislav Stepanov — nieutrzymywana (ostatni commit 2018-05). Używa przestarzałego API v1 wyłącznie pod adresem onetimesecret.com.

// You can use OneTimeSharp in any of your projects which are compatible with .NET (4.0+) or Mono (2.10.8+).
using VStepanov.OneTimeSharp;
class Test
{
static void Main(string[] args)
{
var ots = new OneTimeSecret("YOUR_EMAIL", "YOUR_OTS_APIKEY");
var generated = ots.GenerateSecret();
Console.WriteLine(generated.Value); // LR*?us*A(UT*
Console.WriteLine(generated.SecretKey); // ikzx3m77j5by8411cg5lk5fvfylvl0i
Console.WriteLine(ots.GetSecretLink(generated)); // https://onetimesecret.com/secret/ikzx3m77j5by8411cg5lk5fvfylvl0i
var shared = ots.ShareSecret("Hello, OTS!");
Console.WriteLine(shared.MetadataKey); // kd6rgsucl98qbgu9eavjq4k5sdxsom0
Console.WriteLine(ots.GetMetadataLink(shared)); // https://onetimesecret.com/private/kd6rgsucl98qbgu9eavjq4k5sdxsom0
}
}

Strona GitHub - go-onetimesecret autor: Corbalt — utrzymywana przez społeczność (ostatni commit 2026-05, zaktualizowana pod host us.onetimesecret.com). Zawiera CLI.

import ots "github.com/corbaltcode/go-onetimesecret"
client := ots.Client{
Username: "user@example.com",
Key: "my api key",
}
metadata, err := client.Put("the launch codes", "passphrase", 0, "")
if err != nil {
// handle error
}
secret, err := client.Get(metadata.SecretKey, "passphrase")
if err != nil {
// handle error
}
// prints "the launch codes"
print(secret)
Okno terminala
$ go install github.com/corbaltcode/go-onetimesecret/cmd/ots@latest
$ ots put 'what is essential is invisible to the eye'
hdjk6p0ozf61o7n6pbaxy4in8zuq7sm ifipvdpeo8oy6r8ryjbu8y7rhm9kty9
$ ots get hdjk6p0ozf61o7n6pbaxy4in8zuq7sm
what is essential is invisible to the eye
$ ots gen
rVjbS$twCJkS 4nwhy7v4fnabayqc5auv4ogh0nfr20 flsdlaun6hwczqu9utmc0vts5xj9xu1
$ ots burn flsdlaun6hwczqu9utmc0vts5xj9xu1
flsdlaun6hwczqu9utmc0vts5xj9xu1

Strona GitHub - otsgo autor: Emídio Neto — utrzymywana przez społeczność (ostatnie wydanie v1.1.0, 2024-03). Obsługa domen regionalnych nieudokumentowana.

// Build a new client
client := ots.NewClient(
WithUsername("otsuser@domain.com"),
WithApiKey("xxxxxxxx"),
)
// Send a request with context
ctx := context.Background()
response, err := client.GetStatus(ctx)
if err != nil {
panic(err)
}
fmt.Println(response.Status)

Strona GitHub - OneTimeSecret autor: Craig Gumbley — nieutrzymywana (ostatnie wydanie 2021-06). Obsługuje niestandardowy -BaseUrl, więc może wskazywać na region lub instancję self-hosted, ale powstała przed API v2.

Okno terminala
# Install from the PowerShell gallery
Install-Module -Name OneTimeSecret -Scope CurrentUser
# Set connection information
Set-OTSAuthorizationToken -Username user@mail.com -APIKey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Generate a new shared secret
New-OTSSharedSecret -Secret "Very Secret" -Passphrase 1234 -Recipient user@mail.com
# Retrieve a secret
Get-OTSSecret -SecretKey qqevnp70b4uoiax4knzhwlhros6ne7x -Passphrase 1234
# View all functions that are available
Get-Command -Module OneTimeSecret | Select Name

Strona GitHub - onetimesecret-bash autor: Eric Engstrom — nieutrzymywana (ostatni commit 2020-05). Obsługuje niestandardowy host przez ots_set_host, ale powstała przed API v2 i domenami regionalnymi.

Okno terminala
# source for use anonymously (secrets created anonymously)
source ots.bash
# or, source with specific auth credentials
APIUSER="USERNAME"
APIKEY="APIKEY"
source ots.bash -u $APIUSER -k $APIKEY
# check status of server
ots_status
# create a secret and get back the URL
URL=$(echo "secret" | ots_share)
# share a multi line secret via HEREDOC.
URL=$(ots_share <<-EOF
This is a Secret
... on multiple lines
EOF
)
# pass options to share or generate.
URL=$(ots_share ttl=600 \
passphrase="shared-secret" \
recipient="someone@somewhere.com" <<< "SECRET")
# fetch the secret data
local DATA="$(ots_retrieve "$URL")"
# share/generate a new secret, and get back the private metadata key
local KEY=$(ots_metashare <<< "SECRET")
local KEY=$(ots_metagenerate)
# get a list of private metadata keys recently created.
# note that this requires valid authentication credentials
local -a RECENT=( $(ots_recent) )
# check on the current state of a secret, given the private key
ots_state $KEY
# burn a secret, given the private key
ots_burn $KEY
Okno terminala
# Share a secret (from stdin)
./ots share
SECRET
^D
# Share a secret (via HEREDOC)
./ots share <<-EOF
This is a multi-line secret via HEREDOC.
Something else goes here.
EOF
# Get/Retrieve a secret:
./ots get <key|url>
./ots retrieve <key|url>
# Burn a secret, given its private metadata key:
./ots burn <key>