Passer au contenu

Bibliothèques clientes

Le client officiel est onetime-ruby, qui prend en charge les API v1 et v2, tous les domaines régionaux et les URL de base personnalisées.

Tout le reste de cette page est maintenu par la communauté. La plupart de ces bibliothèques sont antérieures à l’API v2 et aux domaines régionaux ; elles appellent donc généralement les points de terminaison v1 obsolètes sur onetimesecret.com. Consultez la note d’état de chaque entrée et vérifiez qu’une bibliothèque fonctionne avec votre région ou votre instance auto-hébergée avant d’en dépendre.

Langage Bibliothèque Dernière activité¹ Domaine régional / personnalisé
Ruby onetime-ruby (officiel) 2026-06 ✅ toutes les régions + URL de base personnalisée
Go go-onetimesecret 2026-05 hôte US
Python onetimesecret-cli 2024-11 option de région US / EU
Go otsgo 2024-03 non documenté
PowerShell OneTimeSecret 2021-06 URL de base personnalisée
Bash onetimesecret-bash 2020-05 hôte personnalisé
Python py_onetimesecret 2019-05 ❌ (époque Python 2)
C# OneTimeSharp 2018-05 ❌
Java onetime-java 2014-06 URL auto-hébergée uniquement
Perl Net::OneTimeSecret 2012-02 ❌

¹ Commit ou version la plus récente au moment du dernier audit (2026-07).

Page GitHub - onetime-ruby par Delano — client officiel, activement maintenu (dernier commit 2026-06). Prend en charge l’API v1 (obsolète) et v2, les domaines régionaux et les URL de base personnalisées. Nécessite Ruby 3.1+, aucune dépendance à l’exécution.

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']

Page GitHub - onetimesecret-cli par slashpass — maintenu par la communauté (dernier commit 2024-11). Prend en charge une option de région (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

Page GitHub - py_onetimesecret par Vladislav Stepanov — non maintenu (dernier commit en 2019 ; l’exemple ci-dessous est en Python 2). Utilise l’API v1 obsolète sur onetimesecret.com uniquement.

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 sur CPAN par Kyle Dawkins — non maintenu (dernière version 0.04, 2012-02). Antérieur à l’API v2 et aux domaines régionaux.

#!/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} );

Page GitHub - onetime-java par Marcin Pawlowski — non maintenu (dernier commit 2014-06). Accepte une URL d’instance, il peut donc fonctionner en auto-hébergement, mais il est antérieur à l’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());

Page GitHub - OneTimeSharp par Vladislav Stepanov — non maintenu (dernier commit 2018-05). Utilise l’API v1 obsolète sur onetimesecret.com uniquement.

// 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
}
}

Page GitHub - go-onetimesecret par Corbalt — maintenu par la communauté (dernier commit 2026-05, mis à jour pour l’hôte us.onetimesecret.com). Inclut une 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)
Fenêtre de terminal
$ 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

Page GitHub - otsgo par Emídio Neto — maintenu par la communauté (dernière version v1.1.0, 2024-03). Prise en charge des domaines régionaux non documentée.

// 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)

Page GitHub - OneTimeSecret par Craig Gumbley — non maintenu (dernière version 2021-06). Prend en charge un paramètre -BaseUrl personnalisé, il peut donc cibler une région ou une instance auto-hébergée, mais il est antérieur à l’API v2.

Fenêtre de terminal
# 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

Page GitHub - onetimesecret-bash par Eric Engstrom — non maintenu (dernier commit 2020-05). Prend en charge un hôte personnalisé via ots_set_host, mais il est antérieur à l’API v2 et aux domaines régionaux.

Fenêtre de terminal
# 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
Fenêtre de terminal
# 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>