C#
// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
const stytch = require('stytch');
const client = new stytch.B2BClient({
project_id: '${projectId}',
secret: '${secret}',
});
const params = {
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
};
client.M2M.Clients.Secrets.RotateStart(params)
.then(resp => { console.log(resp) })
.catch(err => { console.log(err) });// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
package main
import (
"context"
"log"
"github.com/stytchauth/stytch-go/v18/stytch/b2b/b2bstytchapi"
"github.com/stytchauth/stytch-go/v18/stytch/consumer/m2m/clients/secrets"
)
func main() {
client, err := b2bstytchapi.NewClient(
"${projectId}",
"${secret}",
)
if err != nil {
log.Fatalf("error instantiating client: %v", err)
}
params := &secrets.RotateStartParams{
ClientID: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
}
resp, err := client.M2M.Clients.Secrets.RotateStart(context.Background(), params)
if err != nil {
log.Fatalf("error in method call: %v", err)
}
log.Println(resp)
}// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
package com.example;
import com.stytch.java.b2b.StytchB2BClient;
import com.stytch.java.common.StytchResult;
import com.stytch.java.consumer.models.m2mclientssecrets.RotateStartRequest;
public class Main {
public static void main(String[] args) {
StytchB2BClient.configure("${projectId}", "${secret}");
RotateStartRequest params = new RotateStartRequest();
params.setClientId("m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885");
Object result = StytchB2BClient.getM2M().getClients().getSecrets().rotateStart(params);
if (result instanceof StytchResult.Success) {
System.out.println(((StytchResult.Success) result).getValue());
} else {
System.out.println(((StytchResult.Error) result).getException());
}
}
}// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
package com.example
import com.stytch.java.b2b.StytchB2BClient
import com.stytch.java.consumer.models.m2mclientssecrets.RotateStartRequest
fun main() {
StytchB2BClient.configure(
projectId = "${projectId}",
secret = "${secret}",
)
when (
val result =
StytchB2BClient.m2m.clients.secrets.rotateStart(
RotateStartRequest(
clientId = "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
),
)
) {
is StytchResult.Success -> println(result.value)
is StytchResult.Error -> println(result.exception)
}
}// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
const stytch = require('stytch');
const client = new stytch.B2BClient({
project_id: '${projectId}',
secret: '${secret}',
});
const params = {
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
};
client.m2m.clients.secrets.rotateStart(params)
.then(resp => { console.log(resp) })
.catch(err => { console.log(err) });$response = $client->m2m->clients->secrets->rotate_start([
'client_id' => 'm2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885',
]);# POST /v1/m2m/clients/{client_id}/secrets/rotate/start
from stytch import B2BClient
client = B2BClient(
project_id="${projectId}",
secret="${secret}",
)
resp = client.m2m.clients.secrets.rotate_start(
client_id="m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
)
print(resp)# frozen_string_literal: true
# POST /v1/m2m/clients/{client_id}/secrets/rotate/start
require 'stytch'
client = StytchB2B::Client.new(
project_id: "${projectId}",
secret: "${secret}"
)
resp = client.m2m.clients.secrets.rotate_start(
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885"
)
puts resp// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
use stytch::b2b::client::Client;
use stytch::consumer::m2m_clients_secrets::RotateStartRequest;
fn main() {
let client = Client::new("${projectId}", "${secret}").unwrap();
let resp = client.m2m.clients.secrets.rotate_start(
RotateStartRequest{
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
..Default::default()
}
).await;
println!("The response is {:?}", resp);
}# POST /v1/m2m/clients/{client_id}/secrets/rotate/start
curl --request POST \
--url https://test.stytch.com/v1/m2m/clients/m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885/secrets/rotate/start \
-u '${projectId}:${secret}' \
-H 'Content-Type: application/json'{
"request_id": "<string>",
"m2m_client": {
"client_id": "<string>",
"next_client_secret": "<string>",
"client_name": "<string>",
"client_description": "<string>",
"status": "<string>",
"scopes": [
"<string>"
],
"client_secret_last_four": "<string>",
"trusted_metadata": {},
"next_client_secret_last_four": "<string>"
},
"status_code": 123
}{
"status_code": 401,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "unauthorized_credentials",
"error_message": "Unauthorized credentials.",
"error_url": "https://stytch.com/docs/api/errors/401"
}{
"status_code": 429,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "too_many_requests",
"error_message": "Too many requests have been made.",
"error_url": "https://stytch.com/docs/api/errors/429"
}{
"status_code": 500,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "internal_server_error",
"error_message": "Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us know what went wrong.",
"error_url": "https://stytch.com/docs/api/errors/500"
}Rotate Secret
Start Secret Rotation
Initiate the rotation of an M2M client secret using the Stytch API
POST
/
v1
/
m2m
/
clients
/
{client_id}
/
secrets
/
rotate
/
start
C#
// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
const stytch = require('stytch');
const client = new stytch.B2BClient({
project_id: '${projectId}',
secret: '${secret}',
});
const params = {
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
};
client.M2M.Clients.Secrets.RotateStart(params)
.then(resp => { console.log(resp) })
.catch(err => { console.log(err) });// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
package main
import (
"context"
"log"
"github.com/stytchauth/stytch-go/v18/stytch/b2b/b2bstytchapi"
"github.com/stytchauth/stytch-go/v18/stytch/consumer/m2m/clients/secrets"
)
func main() {
client, err := b2bstytchapi.NewClient(
"${projectId}",
"${secret}",
)
if err != nil {
log.Fatalf("error instantiating client: %v", err)
}
params := &secrets.RotateStartParams{
ClientID: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
}
resp, err := client.M2M.Clients.Secrets.RotateStart(context.Background(), params)
if err != nil {
log.Fatalf("error in method call: %v", err)
}
log.Println(resp)
}// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
package com.example;
import com.stytch.java.b2b.StytchB2BClient;
import com.stytch.java.common.StytchResult;
import com.stytch.java.consumer.models.m2mclientssecrets.RotateStartRequest;
public class Main {
public static void main(String[] args) {
StytchB2BClient.configure("${projectId}", "${secret}");
RotateStartRequest params = new RotateStartRequest();
params.setClientId("m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885");
Object result = StytchB2BClient.getM2M().getClients().getSecrets().rotateStart(params);
if (result instanceof StytchResult.Success) {
System.out.println(((StytchResult.Success) result).getValue());
} else {
System.out.println(((StytchResult.Error) result).getException());
}
}
}// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
package com.example
import com.stytch.java.b2b.StytchB2BClient
import com.stytch.java.consumer.models.m2mclientssecrets.RotateStartRequest
fun main() {
StytchB2BClient.configure(
projectId = "${projectId}",
secret = "${secret}",
)
when (
val result =
StytchB2BClient.m2m.clients.secrets.rotateStart(
RotateStartRequest(
clientId = "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
),
)
) {
is StytchResult.Success -> println(result.value)
is StytchResult.Error -> println(result.exception)
}
}// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
const stytch = require('stytch');
const client = new stytch.B2BClient({
project_id: '${projectId}',
secret: '${secret}',
});
const params = {
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
};
client.m2m.clients.secrets.rotateStart(params)
.then(resp => { console.log(resp) })
.catch(err => { console.log(err) });$response = $client->m2m->clients->secrets->rotate_start([
'client_id' => 'm2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885',
]);# POST /v1/m2m/clients/{client_id}/secrets/rotate/start
from stytch import B2BClient
client = B2BClient(
project_id="${projectId}",
secret="${secret}",
)
resp = client.m2m.clients.secrets.rotate_start(
client_id="m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
)
print(resp)# frozen_string_literal: true
# POST /v1/m2m/clients/{client_id}/secrets/rotate/start
require 'stytch'
client = StytchB2B::Client.new(
project_id: "${projectId}",
secret: "${secret}"
)
resp = client.m2m.clients.secrets.rotate_start(
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885"
)
puts resp// POST /v1/m2m/clients/{client_id}/secrets/rotate/start
use stytch::b2b::client::Client;
use stytch::consumer::m2m_clients_secrets::RotateStartRequest;
fn main() {
let client = Client::new("${projectId}", "${secret}").unwrap();
let resp = client.m2m.clients.secrets.rotate_start(
RotateStartRequest{
client_id: "m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885",
..Default::default()
}
).await;
println!("The response is {:?}", resp);
}# POST /v1/m2m/clients/{client_id}/secrets/rotate/start
curl --request POST \
--url https://test.stytch.com/v1/m2m/clients/m2m-client-test-d731954d-dab3-4a2b-bdee-07f3ad1be885/secrets/rotate/start \
-u '${projectId}:${secret}' \
-H 'Content-Type: application/json'{
"request_id": "<string>",
"m2m_client": {
"client_id": "<string>",
"next_client_secret": "<string>",
"client_name": "<string>",
"client_description": "<string>",
"status": "<string>",
"scopes": [
"<string>"
],
"client_secret_last_four": "<string>",
"trusted_metadata": {},
"next_client_secret_last_four": "<string>"
},
"status_code": 123
}{
"status_code": 401,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "unauthorized_credentials",
"error_message": "Unauthorized credentials.",
"error_url": "https://stytch.com/docs/api/errors/401"
}{
"status_code": 429,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "too_many_requests",
"error_message": "Too many requests have been made.",
"error_url": "https://stytch.com/docs/api/errors/429"
}{
"status_code": 500,
"request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
"error_type": "internal_server_error",
"error_message": "Oops, something seems to have gone wrong, please reach out to support@stytch.com to let us know what went wrong.",
"error_url": "https://stytch.com/docs/api/errors/500"
}After this endpoint is called, both the client’s
client_secret and next_client_secret will be valid. To complete the secret rotation flow, update all usages of client_secret to next_client_secret and call the Rotate Secret Endpoint to complete the flow. Secret rotation can be cancelled using the Rotate Cancel Endpoint.
The API response is the only time you will be able to view the generated
next_client_secret. Stytch stores a hash of the next_client_secret and cannot recover the value if lost. Be sure to persist the next_client_secret in a secure location. If the next_client_secret is lost, you will need to trigger a secret rotation flow to receive another one.Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Path Parameters
The ID of the client.
Body
application/json
Request type
Response
Successful response
Globally unique UUID that is returned with every API call. This value is important to log for debugging purposes; we may ask for this value to help identify a specific API call when helping you debug an issue.
The M2M Client affected by this operation.
Show child attributes
Show child attributes
The HTTP status code of the response. Stytch follows standard HTTP response status code patterns, e.g. 2XX values equate to success, 3XX values are redirects, 4XX are client errors, and 5XX are server errors.
⌘I