> ## Documentation Index
>
> Fetch the complete documentation index at: [/docs/llms.txt](/content/docs/llms.txt)
>
> Use this file to discover all available pages before exploring further.

[Skip to main content](/content/docs/platform/authentication/partner-credentials#content-area/index.html)

Assistant

Responses are generated using AI and may contain mistakes.

Partner credentials identify your platform to Namespace.
Instead of a shared secret, your platform signs a short-lived JSON Web Token (JWT) with its private key, and Namespace verifies the signature with the matching public key it holds for your platform.
The private key never leaves your infrastructure.This page shows how to sign those tokens and create a partner client, which the [tenant management pages](/content/docs/platform/tenants/index.html) use for every operation.

## [​](/content/docs/platform/authentication/partner-credentials\#before-you-start/index.html)  Before you start

You need four values from your partner setup:

| Value | Example | Used as |
| --- | --- | --- |
| Partner ID | `user_01abcdefghjkmnpqrstvwxyz00` | The token’s `sub` claim |
| Issuer | `https://auth.example.com` | The token’s `iss` claim |
| Key ID | `0123456789abcdef0123456789abcdef01234567` | The token’s `kid` header |
| Private key | A P-256 (ES256) key in PEM format | Signs the token |

Keep the private key in a secret store. Never send it to Namespace, log it, pass it on a command line, or commit it. Namespace only needs the public key.

### [​](/content/docs/platform/authentication/partner-credentials\#become-a-partner/index.html)  Become a partner

To become a Namespace partner, contact [support@namespace.so](mailto:support@namespace.so).
The Namespace team sets up your partner account, registers your public key, and gives you your partner ID, issuer, and key ID.While you wait, you can start building the parts of your platform that run inside a tenant with your own workspace. See [Build on your own workspace](/content/docs/platform/authentication/local-development/index.html).

## [​](/content/docs/platform/authentication/partner-credentials\#create-a-partner-client/index.html)  Create a partner client

1

[Navigate to header](/content/docs/platform/authentication/partner-credentials#add-a-client-library/index.html)

### Add a client library

TypeScript

Go

```
npm install @namespacelabs/sdk @bufbuild/protobuf
```

```
go get namespacelabs.dev/integrations github.com/golang-jwt/jwt/v4
```

2

[Navigate to header](/content/docs/platform/authentication/partner-credentials#sign-partner-tokens/index.html)

### Sign partner tokens

A partner token is an ES256-signed JWT with these fields, prefixed with `oidc_`:

| Field | Value |
| --- | --- |
| `kid` (header) | Your key ID |
| `iss` | Your issuer |
| `sub` | Your partner ID |
| `aud` | `namespace.so` |
| `iat` | The current time |
| `exp` | A short expiry, such as 20 minutes |

Wrap the signing in a token source.
The client asks the token source for a token when it needs one, and asks again when the current token is about to expire, so a long-running service always sends a valid token.

TypeScript

Go

```
import { sign } from "node:crypto";
import { readFileSync } from "node:fs";
import type { TokenSource } from "@namespacelabs/sdk/auth";

const partnerId = "user_01abcdefghjkmnpqrstvwxyz00";
const issuer = "https://auth.example.com";
const keyId = "0123456789abcdef0123456789abcdef01234567";
const privateKey = readFileSync("partner-key.pem");

function base64url(value: object): string {
  return Buffer.from(JSON.stringify(value)).toString("base64url");
}

const partnerTokenSource: TokenSource = {
  async issueToken() {
    const now = Math.floor(Date.now() / 1000);
    const header = base64url({ alg: "ES256", typ: "JWT", kid: keyId });
    const claims = base64url({
      iss: issuer,
      sub: partnerId,
      aud: "namespace.so",
      iat: now,
      exp: now + 20 * 60,
    });
    const signature = sign("sha256", Buffer.from(`${header}.${claims}`), {
      key: privateKey,
      dsaEncoding: "ieee-p1363",
    });

return `oidc_${header}.${claims}.${signature.toString("base64url")}`;
  },
};
```

```
import (
	"context"
	"crypto/ecdsa"
	"time"

"github.com/golang-jwt/jwt/v4"
)

const (
	partnerID = "user_01abcdefghjkmnpqrstvwxyz00"
	issuer    = "https://auth.example.com"
	keyID     = "0123456789abcdef0123456789abcdef01234567"
)

type partnerTokenSource struct {
	privateKey *ecdsa.PrivateKey
}

func (p partnerTokenSource) IssueToken(ctx context.Context, minDuration time.Duration, force bool) (string, error) {
	now := time.Now()
	token := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.RegisteredClaims{
		Issuer:    issuer,
		Subject:   partnerID,
		Audience:  jwt.ClaimStrings{"namespace.so"},
		IssuedAt:  jwt.NewNumericDate(now),
		ExpiresAt: jwt.NewNumericDate(now.Add(20 * time.Minute)),
	})
	token.Header["kid"] = keyID

signed, err := token.SignedString(p.privateKey)
	if err != nil {
		return "", err
	}

return "oidc_" + signed, nil
}
```

The TypeScript SDK caches the token and calls `issueToken` again when fewer than five minutes of validity remain.
The Go SDK calls `IssueToken` for every request, which signs a new token each time. Signing is local and cheap.

3

[Navigate to header](/content/docs/platform/authentication/partner-credentials#test-partner-token-source/index.html)

### Test Partner Token Source

Create a partner client with the token source, then list your tenants to confirm it authenticates.
Listing tenants is a read-only call, which makes it a safe first request.

TypeScript

Go

```
import { createIAMClient } from "@namespacelabs/sdk/api/iam";

const partnerClient = createIAMClient({ tokenSource: partnerTokenSource });

const { tenants } = await partnerClient.tenants.listTenants({ limit: 10 });
console.log(`Authenticated. Found ${tenants.length} tenants.`);
```

```
import (
	"fmt"
	"log"
	"os"

"github.com/golang-jwt/jwt/v4"
	"namespacelabs.dev/integrations/api/iam"
	iamv1beta "namespacelabs.dev/integrations/proto/namespace/cloud/iam/v1beta"
)

pemBytes, err := os.ReadFile("partner-key.pem")
if err != nil {
	log.Fatal(err)
}

privateKey, err := jwt.ParseECPrivateKeyFromPEM(pemBytes)
if err != nil {
	log.Fatal(err)
}

partnerClient, err := iam.NewClient(ctx, partnerTokenSource{privateKey})
if err != nil {
	log.Fatal(err)
}
defer partnerClient.Close()

resp, err := partnerClient.Tenants.ListTenants(ctx, &iamv1beta.ListTenantsRequest{Limit: 10})
if err != nil {
	log.Fatal(err)
}

fmt.Printf("Authenticated. Found %d tenants.\n", len(resp.Tenants))
```

A new partner account has no tenants yet, so `Found 0 tenants` is a successful result.
The partner client exposes the tenant and token services, and it is the `partnerClient` that the rest of the multi-tenancy docs start from.

## [​](/content/docs/platform/authentication/partner-credentials\#next-steps/index.html)  Next steps

[**Create tenants** \\
\\
Give each of your customers their own tenant.](/content/docs/platform/tenants/create/index.html)

[**Tenant tokens** \\
\\
Act inside a tenant on behalf of a customer.](/content/docs/platform/authentication/tenant-tokens/index.html)

Last modified onOctober 2, 2026

Ctrl+I

{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Namespace Documentation","colors":{"primary":"#1C32FF","light":"#6B78FF","dark":"#1C32FF"},"logo":{"light":"https://mintcdn.com/namespace-labs/qOJQ7kaWRgoS8lyv/logo-light.svg?fit=max\\u0026auto=format\\u0026n=qOJQ7kaWRgoS8lyv\\u0026q=85\\u0026s=6827b0c81c335badc1cef13b83383e1d","dark":"https://mintcdn.com/namespace-labs/qOJQ7kaWRgoS8lyv/logo-dark.svg?fit=max\\u0026auto=format\\u0026n=qOJQ7kaWRgoS8lyv\\u0026q=85\\u0026s=63702d83d8fb259023deb79db06aabbb","href":"https://namespace.so"},"favicon":"https://mintcdn.com/namespace-labs/MoefQ379UcpNU680/favicon.svg?fit=max\\u0026auto=format\\u0026n=MoefQ379UcpNU680\\u0026q=85\\u0026s=6f14a088da55e5f41847845796737353","navbar":{"links":\[{"href":"https://namespace.so/changelog","label":"Changelog"},{"href":"https://namespace.so/support","label":"Support"}\],"primary":{"type":"button","label":"Log in","href":"https://cloud.namespace.so"}},"footer":{"socials":{"github":"https://github.com/namespacelabs","linkedin":"https://www.linkedin.com/company/namespacelabs","x":"https://x.com/namespacelabs"}},"icons":{"library":"lucide"},"contextual":{"options":\["copy","view","chatgpt","claude"\],"display":"header"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"global":{"anchors":\[{"anchor":"Changelog","icon":"history","href":"https://namespace.so/changelog"},{"anchor":"Trust Center (SOC2)","icon":"shield-check","href":"https://trust.namespace.so/"},{"anchor":"Status","icon":"activity","href":"https://namespace-status.com/"},{"anchor":"Support","icon":"message-circle","href":"https://namespace.so/support"}\]},"pages":\[\]}},"deployment":{"deploymentMetadataValue":{"subdomain":"namespace-labs","hasAudioNarration":false,"actualSubdomain":"namespace-labs","customDomains":\["namespace.so"\],"gitSource":{"type":"github","owner":"namespacelabs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae0862207896b4595e1934b","collectionId":"847aecca-4a0b-40b4-a393-e976cc214b43","liveDeploymentHistoryId":"6ae0862207896b4595e1934b","schemaVersion":"v3"},"entitlements":{"AI\_CHAT":{"status":"ENABLED"},"WEB\_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0a8f6edbd4c098a94623c","clientVersion":"0.0.3971","searchFilterCounts":\[{"language":"default","tag":"Products","count":377},{"language":"default","tag":"CLI","count":166},{"language":"default","tag":"Command line","count":165},{"language":"default","tag":"Namespace CLI","count":131},{"language":"default","tag":"Documentation","count":104},{"language":"default","tag":"GitHub Actions","count":40},{"language":"default","tag":"Devbox CLI","count":34},{"language":"default","tag":"Integrations","count":33},{"language":"default","tag":"SDK","count":25},{"language":"default","tag":"Namespace SDK","count":23}\]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":\[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature\_enabled":true},"impressionData":false}\],"isAtlas":false,"googleFontsInlined":true},"customCss":\[{"filePath":"snippets/diagrams/styles.css","content":".ns-diagram{--ns-diagram-background:#ffffff;--ns-diagram-grid:#e5e7ee;--ns-diagram-border:#e5e7ee;--ns-diagram-card:#ffffff;--ns-diagram-neutral-zone:#fafbfc;--ns-diagram-brand-zone-start:rgba(28, 50, 255, 0.04);--ns-diagram-brand-zone-end:rgba(28, 50, 255, 0.07);--ns-diagram-brand-border:#c8ceff;--ns-diagram-heading:#202938;--ns-diagram-muted:#8892a6;--ns-diagram-copy:#4a5468;position:relative;width:100%;margin:2rem 0;padding:clamp(20px,3.5vw,32px);overflow:hidden;color:var(--ns-diagram-heading);background:var(--ns-diagram-background);border:1px solid var(--ns-diagram-border);border-radius:20px;box-shadow:0 1px 0 rgba(32,41,56,.04),0 1px 2px rgba(32,41,56,.06)}.dark .ns-diagram{--ns-diagram-background:#111827;--ns-diagram-grid:#374151;--ns-diagram-border:#374151;--ns-diagram-card:#1f2937;--ns-diagram-neutral-zone:#171f2d;--ns-diagram-brand-zone-start:rgba(107, 120, 255, 0.1);--ns-diagram-brand-zone-end:rgba(107, 120, 255, 0.16);--ns-diagram-brand-border:#4f5fc7;--ns-diagram-heading:#f3f4f6;--ns-diagram-muted:#aeb6c5;--ns-diagram-copy:#cbd5e1}.ns-diagram-grid-background{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle,var(--ns-diagram-grid) 1px,transparent 1px);background-size:16px 16px;opacity:.5;mask-image:linear-gradient(180deg,transparent 0,#000 10%,#000 90%,transparent 100%)}.ns-diagram-content{position:relative}.ns-diagram-caption{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ns-diagram-mark{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;margin:0;border-radius:8px}.ns-diagram-mark-anthropic{color:#d97757;background:#fcefe8}.ns-diagram-mark-devin{color:#4338ca;background:#eef0ff}.ns-diagram-mark-cursor{color:#111827;background:#eef0f3}.ns-diagram-mark-control{color:#1c32ff;background:#e0e7ff}.ns-diagram-mark-terminal{color:#fff;background:#202938}.ns-diagram-mark-worker{color:#4338ca;background:#eef1ff}.ns-diagram-zone{position:relative;display:flex;flex-direction:column;padding:1.25rem;background:var(--ns-diagram-neutral-zone);border:1px dashed #d2d6e0;border-radius:14px}.dark .ns-diagram-zone{border-color:#4b5563}.ns-diagram-zone-brand{background:linear-gradient(180deg,var(--ns-diagram-brand-zone-start),var(--ns-diagram-brand-zone-end));border:1px solid var(--ns-diagram-brand-border)}.ns-diagram-zone-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;color:var(--ns-diagram-copy);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.ns-diagram-zone-center{display:flex;flex:1;align-items:center}.ns-diagram-zone-center>\*{width:100%}.ns-diagram-card{position:relative;display:flex;align-items:center;gap:1rem;min-width:0;padding:1rem 1.25rem;background:var(--ns-diagram-card);border:1px solid var(--ns-diagram-border);border-radius:12px;box-shadow:0 1px 0 rgba(32,41,56,.04),0 1px 2px rgba(32,41,56,.06)}.ns-diagram-card-brand{border-color:var(--ns-diagram-brand-border)}.ns-diagram-card-copy{display:flex;min-width:0;flex-direction:column}.ns-diagram-card-label{color:var(--ns-diagram-heading);font-size:16px;font-weight:600;line-height:1.25;letter-spacing:-.01em}.ns-diagram-card-sublabel{margin-top:.125rem;color:var(--ns-diagram-muted);font-size:12px;line-height:1.35}.ns-managed-layout{display:grid;grid-template-columns:1fr auto 1.05fr;align-items:stretch}.ns-managed-connector{display:flex;width:64px;flex-direction:column;align-items:center;justify-content:center;padding:0 .25rem;color:var(--ns-diagram-muted);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10.5px}.ns-managed-connector>span{margin-bottom:.375rem}.ns-managed-connector-path{display:flex;width:56px;align-items:center}.ns-managed-connector-line{flex:1;height:1.5px;background:#d2d6e0}.ns-managed-connector-arrow{border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:9px solid #d2d6e0}.ns-mini-connector{display:flex;flex-direction:column;align-items:center;padding:.375rem 0}.ns-mini-connector>div{width:1.5px;height:12px;background:var(--ns-diagram-brand-border)}.ns-mini-connector>span{border-top:7px solid var(--ns-diagram-brand-border);border-right:5px solid transparent;border-left:5px solid transparent}.ns-devin-devboxes,.ns-devin-sessions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.ns-devin-mobile-layout{display:none}.ns-devin-connectors,.ns-devin-connectors>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.ns-devin-connectors{gap:1.5rem}.ns-devin-connectors>div{padding:0 1rem}.ns-devin-connector{position:relative;display:flex;min-height:110px;align-items:center;justify-content:center;color:var(--ns-diagram-copy);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10px;line-height:1.25;text-align:center}.ns-devin-management-connector{min-height:70px;color:#6366f1}.ns-devin-connector-line{position:absolute;top:0;bottom:0;left:50%;width:1.5px;background:#d2d6e0;transform:translateX(-50%)}.ns-devin-management-connector .ns-devin-connector-line,.ns-diagram-connector-dashed .ns-diagram-vertical-line{width:0;background:0 0;border-left:1.5px dashed var(--ns-diagram-brand-border)}.ns-devin-connector>span,.ns-diagram-vertical-connector>span{position:relative;z-index:1;padding:0 .375rem;background:var(--ns-diagram-background)}.ns-control-plane-pill{display:flex;align-items:center;align-self:center;gap:.375rem;margin-bottom:1rem;padding:.375rem .75rem;color:#4338ca;background:#eef1ff;border:1px solid var(--ns-diagram-brand-border);border-radius:999px;font-size:12px;font-weight:500}.ns-diagram-vertical-connector{position:relative;display:flex;align-items:center;justify-content:center;color:var(--ns-diagram-copy);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10px;line-height:1.25;text-align:center}.ns-diagram-vertical-line{position:absolute;top:0;bottom:0;left:50%;width:1.5px;background:#d2d6e0;transform:translateX(-50%)}.ns-diagram-connector-dashed{color:#6366f1}.ns-diagram-arrow-down{position:absolute;bottom:0;left:50%;border-top:8px solid #d2d6e0;border-right:5px solid transparent;border-left:5px solid transparent;transform:translateX(-50%)}.ns-devin-management-connector .ns-diagram-arrow-down,.ns-diagram-connector-dashed .ns-diagram-arrow-down{border-top-color:var(--ns-diagram-brand-border)}.ns-bazel-connector-inset{padding:0 1rem}.ns-bazel-workers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}@media (max-width:767px){.ns-managed-layout{grid-template-columns:1fr}.ns-managed-connector{position:relative;width:auto;min-height:64px;padding:.5rem 0}.ns-managed-connector-path{width:auto;flex-direction:column}.ns-managed-connector-line{width:1.5px;height:24px;flex:none}.ns-managed-connector-arrow{border-top:9px solid #d2d6e0;border-right:6px solid transparent;border-bottom:0;border-left:6px solid transparent}.ns-devin-connectors,.ns-devin-devboxes,.ns-devin-sessions{grid-template-columns:1fr}.ns-devin-desktop-layout{display:none}.ns-devin-mobile-layout{display:block}.ns-devin-mobile-lane+.ns-devin-mobile-lane{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--ns-diagram-border)}.ns-devin-mobile-connectors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:0 .5rem}.ns-devin-connector{min-height:80px}.ns-bazel-workers{grid-template-columns:1fr}}"},{"filePath":"style.css","content":":root{--namespace-radius-inline:0.25rem;--namespace-radius-control:0.375rem;--namespace-radius-container:0.5rem}#content-container,.almond-layout>div,.card,.chat-assistant-floating-input>div,.code-block,.frame,.pagination-next,.pagination-prev{border-radius:var(--namespace-radius-container)}.code-block \[data-component-part=code-block-root\],.frame>div{border-radius:inherit}#assistant-entry,#chat-assistant-textarea,#search-bar-entry,#search-input,.callout,.frame>.relative{border-radius:var(--namespace-radius-control)}.code-block-fade-overlay{border-radius:0 var(--namespace-radius-container) var(--namespace-radius-container) 0}#page-context-menu>button:first-child{border-radius:var(--namespace-radius-control) 0 0 var(--namespace-radius-control)}#page-context-menu>button:last-child{border-radius:0 var(--namespace-radius-control) var(--namespace-radius-control) 0}#content :not(pre)>code,#navigation-items li>a,#navigation-items li>button{border-radius:var(--namespace-radius-inline)}#navigation-items .nav-anchor>:is(svg, img),#navigation-items .sidebar-group-icon,#navigation-items \[data-component-part=scroll-area-content\]:has(>ul.nav-anchors),#navigation-items li>:is(a, button)>div\[class~=\\"h-\[1lh\]\\"\]:first-child{display:flex;flex-direction:column}#navigation-items \[data-component-part=scroll-area-content\]>ul.nav-anchors{order:1;margin-top:1rem;padding-top:1rem;border-top:1px solid color-mix(in srgb,currentColor 10%,transparent)}#navigation-items \[data-component-part=scroll-area-content\]>ul.sidebar-group{margin-top:.5rem}#navigation-items \[data-component-part=scroll-area-content\]>ul.sidebar-group+div{margin-top:1rem}.tab-container{overflow:hidden;padding:0 1rem 1rem;border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:var(--namespace-radius-container)}.tab-container \[data-component-part=tab-content\]>\[data-table-wrapper\]:last-child{margin-bottom:0;padding-bottom:0}#content .katex-display>.katex{text-align:left}.compact-table table td{min-width:0}#navigation-items ul.sidebar-group>li.space-y-px+li.space-y-px{margin-top:.75rem}#navigation-items .my-2>.sidebar-group-header{margin-bottom:.625rem;font-size:.8125rem;line-height:1.625rem;font-weight:600;letter-spacing:-.02em;text-transform:none;opacity:1}#navigation-items ul.sidebar-group>li.space-y-px>button{font-size:.8125rem;font-weight:600;letter-spacing:-.02em;background-color:transparent}#navigation-items ul.sidebar-group>li.space-y-px>button:hover,#navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>button:hover{background-color:color-mix(in srgb,currentColor 6%,transparent)}#navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>button,#navigation-items ul.sidebar-group>li.space-y-px>ul>li>a{padding-left:3rem!important;font-size:.8125rem;font-weight:400;letter-spacing:-.02em}#navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>ul>li\[data-active-nav-item=true\]>a,#navigation-items ul.sidebar-group>li.space-y-px>ul>li\[data-active-nav-item=true\]>a{color:#121516!important;background-color:rgb(18 21 22/6%)!important}.dark #navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>ul>li\[data-active-nav-item=true\]>a,.dark #navigation-items ul.sidebar-group>li.space-y-px>ul>li\[data-active-nav-item=true\]>a{color:#f4f4f5!important;background-color:rgb(255 255 255/8%)!important}#navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>button{background-color:transparent}#navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>button>div\[class~=\\"h-\[1lh\]\\"\]:first-child{margin-left:-1.75rem}.dark #navigation-items img\[src\*=buildkite-mark\]{filter:brightness(.7)}.dark img\[src\*=\\"/icons/apple.svg\\"\]{filter:invert(1)}.dark img.tab-icon\[src\*=\\"/icons/linux.svg\\"\]{filter:invert(.35) brightness(1.54)}#navigation-items ul.sidebar-group>li.space-y-px>ul>li.space-y-px>ul>li>a{padding-left:4rem!important;font-size:.8125rem;font-weight:400;letter-spacing:-.02em}@media (min-width:1024px){#sidebar-content{width:calc(16.5rem + 10px)}#content-container{margin-left:calc(16.5rem + 10px)}#navbar{container-type:inline-size}#navbar .nav-tabs{position:fixed;top:0;left:20rem;height:3.5rem;column-gap:2rem}#navbar div:has(>div>.nav-tabs){justify-content:flex-end}@container (max-width: 69rem){#navbar .navbar-link:has(>a\[href=\\"https://namespace.so/changelog\\"\]){display:none}}}@media (min-width:1280px){#content-container{padding-right:1.5rem;padding-left:3rem}#content-container>div{column-gap:1.5rem;justify-content:flex-start}#content-area{width:calc(100% - 13.5rem);max-width:52rem;flex:none}#content-side-layout{width:15rem;max-width:15rem;flex-basis:15rem}#content-side-layout>div{width:15rem;padding-left:1rem}#content-side-layout>div>div{width:14rem}}@media (min-width:1700px){#content-container>div{justify-content:center}}"},{"filePath":"reference/github-actions/runner-configuration.css","content":""},{"filePath":"workspaces/access.css","content":""},{"filePath":"platform/workspaces/access.css","content":""},{"filePath":"reference/devbox-cli/desktop.css","content":""}\],"page":{"pagePath":"platform/authentication/partner-credentials","slug":"/platform/authentication/partner-credentials","pageMetadata":{"title":"Partner Credentials","sidebarTitle":"Partner credentials","description":"Sign short-lived partner tokens with your private key and create a client that manages your tenants.","noindex":true,"href":"/platform/authentication/partner-credentials"},"description":{"compiledSource":"\\"use strict\\";\\nconst {jsx: \_jsx} = arguments\[0\];\\nconst {useMDXComponents: \_provideComponents} = arguments\[0\];\\nfunction \_createMdxContent(props) {\\n const \_components = {\\n p: \\"p\\",\\n ...\_provideComponents(),\\n ...props.components\\n };\\n return \_jsx(\_components.p, {\\n children: \\"Sign short-lived partner tokens with your private key and create a client that manages your tenants.\\"\\n });\\n}\\nfunction MDXContent(props = {}) {\\n const {wrapper: MDXLayout} = {\\n ...\_provideComponents(),\\n ...props.components\\n };\\n return MDXLayout ? \_jsx(MDXLayout, {\\n ...props,\\n children: \_jsx(\_createMdxContent, {\\n ...props\\n })\\n }) : \_createMdxContent(props);\\n}\\nreturn {\\n default: MDXContent\\n};\\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\\"use strict\\";const{Fragment:\_Fragment,jsx:\_jsx,jsxs:\_jsxs}=arguments\[0\];const{useMDXComponents:\_provideComponents}=arguments\[0\];function \_createMdxContent(props){const \_components={a:\`a\`,code:\`code\`,p:\`p\`,pre:\`pre\`,span:\`span\`,tbody:\`tbody\`,td:\`td\`,th:\`th\`,thead:\`thead\`,tr:\`tr\`,...\_provideComponents(),...props.components},{Card,CodeBlock,CodeGroup,Columns,Heading,Step,Steps,Table,Warning}=\_components;if(!Card)\_missingMdxReference(\`Card\`,true);if(!CodeBlock)\_missingMdxReference(\`CodeBlock\`,true);if(!CodeGroup)\_missingMdxReference(\`CodeGroup\`,true);if(!Columns)\_missingMdxReference(\`Columns\`,true);if(!Heading)\_missingMdxReference(\`Heading\`,true);if(!Step)\_missingMdxReference(\`Step\`,true);if(!Steps)\_missingMdxReference(\`Steps\`,true);if(!Table)\_missingMdxReference(\`Table\`,true);if(!Warning)\_missingMdxReference(\`Warning\`,true);return \_jsxs(\_Fragment,{children:\[\_jsx(\_components.p,{children:\`Partner credentials identify your platform to Namespace.\\nInstead of a shared secret, your platform signs a short-lived JSON Web Token (JWT) with its private key, and Namespace verifies the signature with the matching public key it holds for your platform.\\nThe private key never leaves your infrastructure.\`}),\`\\n\`,\_jsxs(\_components.p,{children:\[\`This page shows how to sign those tokens and create a partner client, which the \`,\_jsx(\_components.a,{href:\`/platform/tenants\`,children:\`tenant management pages\`}),\` use for every operation.\`\]}),\`\\n\`,\_jsx(Heading,{level:\`2\`,id:\`before-you-start\`,children:\`Before you start\`}),\`\\n\`,\_jsx(\_components.p,{children:\`You need four values from your partner setup:\`}),\`\\n\`,\_jsxs(Table,{children:\[\_jsx(\_components.thead,{children:\_jsxs(\_components.tr,{children:\[\_jsx(\_components.th,{children:\`Value\`}),\_jsx(\_components.th,{children:\`Example\`}),\_jsx(\_components.th,{children:\`Used as\`})\]})}),\_jsxs(\_components.tbody,{children:\[\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\`Partner ID\`}),\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`user\_01abcdefghjkmnpqrstvwxyz00\`})}),\_jsxs(\_components.td,{children:\[\`The token’s \`,\_jsx(\_components.code,{children:\`sub\`}),\` claim\`\]})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\`Issuer\`}),\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`https://auth.example.com\`})}),\_jsxs(\_components.td,{children:\[\`The token’s \`,\_jsx(\_components.code,{children:\`iss\`}),\` claim\`\]})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\`Key ID\`}),\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`0123456789abcdef0123456789abcdef01234567\`})}),\_jsxs(\_components.td,{children:\[\`The token’s \`,\_jsx(\_components.code,{children:\`kid\`}),\` header\`\]})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\`Private key\`}),\_jsx(\_components.td,{children:\`A P-256 (ES256) key in PEM format\`}),\_jsx(\_components.td,{children:\`Signs the token\`})\]})\]})\]}),\`\\n\`,\_jsx(Warning,{children:\_jsx(\_components.p,{children:\`Keep the private key in a secret store. Never send it to Namespace, log it, pass it on a command line, or commit it. Namespace only needs the public key.\`})}),\`\\n\`,\_jsx(Heading,{level:\`3\`,id:\`become-a-partner\`,children:\`Become a partner\`}),\`\\n\`,\_jsxs(\_components.p,{children:\[\`To become a Namespace partner, contact \`,\_jsx(\_components.a,{href:\`mailto:support@namespace.so\`,children:\`support@namespace.so\`}),\`.\\nThe Namespace team sets up your partner account, registers your public key, and gives you your partner ID, issuer, and key ID.\`\]}),\`\\n\`,\_jsxs(\_components.p,{children:\[\`While you wait, you can start building the parts of your platform that run inside a tenant with your own workspace. See \`,\_jsx(\_components.a,{href:\`/platform/authentication/local-development\`,children:\`Build on your own workspace\`}),\`.\`\]}),\`\\n\`,\_jsx(Heading,{level:\`2\`,id:\`create-a-partner-client\`,children:\`Create a partner client\`}),\`\\n\`,\_jsxs(Steps,{titleSize:\`h3\`,children:\[\_jsx(Step,{title:\`Add a client library\`,id:\`add-a-client-library\`,children:\_jsxs(CodeGroup,{children:\[\_jsx(CodeBlock,{filename:\`TypeScript\`,numberOfLines:\`1\`,language:\`shellscript\`,children:\_jsx(\_components.pre,{className:\`shiki shiki-themes github-light-default dark-plus\`,style:{backgroundColor:\`#ffffff\`,\\"--shiki-dark-bg\\":\`#0B0C0E\`,color:\`#1f2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},language:\`shellscript\`,children:\_jsxs(\_components.code,{language:\`shellscript\`,numberOfLines:\`1\`,children:\[\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`npm\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` install\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` @namespacelabs/sdk\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` @bufbuild/protobuf\`})\]}),\`\\n\`\]})})}),\_jsx(CodeBlock,{filename:\`Go\`,numberOfLines:\`1\`,language:\`shellscript\`,children:\_jsx(\_components.pre,{className:\`shiki shiki-themes github-light-default dark-plus\`,style:{backgroundColor:\`#ffffff\`,\\"--shiki-dark-bg\\":\`#0B0C0E\`,color:\`#1f2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},language:\`shellscript\`,children:\_jsxs(\_components.code,{language:\`shellscript\`,numberOfLines:\`1\`,children:\[\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`go\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` get\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` namespacelabs.dev/integrations\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` github.com/golang-jwt/jwt/v4\`})\]}),\`\\n\`\]})})})\]})}),\_jsxs(Step,{title:\`Sign partner tokens\`,id:\`sign-partner-tokens\`,children:\[\_jsxs(\_components.p,{children:\[\`A partner token is an ES256-signed JWT with these fields, prefixed with \`,\_jsx(\_components.code,{children:\`oidc\_\`}),\`:\`\]}),\_jsxs(Table,{children:\[\_jsx(\_components.thead,{children:\_jsxs(\_components.tr,{children:\[\_jsx(\_components.th,{children:\`Field\`}),\_jsx(\_components.th,{children:\`Value\`})\]})}),\_jsxs(\_components.tbody,{children:\[\_jsxs(\_components.tr,{children:\[\_jsxs(\_components.td,{children:\[\_jsx(\_components.code,{children:\`kid\`}),\` (header)\`\]}),\_jsx(\_components.td,{children:\`Your key ID\`})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`iss\`})}),\_jsx(\_components.td,{children:\`Your issuer\`})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`sub\`})}),\_jsx(\_components.td,{children:\`Your partner ID\`})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`aud\`})}),\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`namespace.so\`})})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`iat\`})}),\_jsx(\_components.td,{children:\`The current time\`})\]}),\_jsxs(\_components.tr,{children:\[\_jsx(\_components.td,{children:\_jsx(\_components.code,{children:\`exp\`})}),\_jsx(\_components.td,{children:\`A short expiry, such as 20 minutes\`})\]})\]})\]}),\_jsx(\_components.p,{children:\`Wrap the signing in a token source.\\nThe client asks the token source for a token when it needs one, and asks again when the current token is about to expire, so a long-running service always sends a valid token.\`}),\_jsxs(CodeGroup,{children:\[\_jsx(CodeBlock,{filename:\`TypeScript\`,numberOfLines:\`32\`,language:\`typescript\`,children:\_jsx(\_components.pre,{className:\`shiki shiki-themes github-light-default dark-plus\`,style:{backgroundColor:\`#ffffff\`,\\"--shiki-dark-bg\\":\`#0B0C0E\`,color:\`#1f2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},language:\`typescript\`,children:\_jsxs(\_components.code,{language:\`typescript\`,numberOfLines:\`32\`,children:\[\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`import\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` { \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`sign\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` } \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`from\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"node:crypto\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`import\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` { \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`readFileSync\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` } \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`from\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"node:fs\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`import\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\` type\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` { \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`TokenSource\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` } \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`from\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"@namespacelabs/sdk/auth\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` partnerId\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"user\_01abcdefghjkmnpqrstvwxyz00\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` issuer\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"https://auth.example.com\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` keyId\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"0123456789abcdef0123456789abcdef01234567\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` privateKey\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` readFileSync\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"partner-key.pem\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`);\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`function\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` base64url\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`value\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`:\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` object\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`:\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` string\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\` return\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` Buffer\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`from\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\`JSON\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`stringify\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`value\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)).\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`toString\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"base64url\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`);\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` partnerTokenSource\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`:\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` TokenSource\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` async\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` issueToken\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`() {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` now\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` Math\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`floor\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Date\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`now\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`() \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`/\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#B5CEA8\`},children:\` 1000\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`);\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` header\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` base64url\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`({ \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`alg:\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"ES256\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`typ:\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"JWT\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`kid:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` keyId\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` });\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` claims\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` base64url\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`({\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` iss:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` issuer\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` sub:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` partnerId\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` aud:\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"namespace.so\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` iat:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` now\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` exp:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` now\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` +\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#B5CEA8\`},children:\` 20\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` \*\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#B5CEA8\`},children:\` 60\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` });\`})}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` signature\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` sign\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"sha256\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Buffer\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`from\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\\"\`\\"}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\\"${\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`header\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`}\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\\"${\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`claims\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`}\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\\"\`\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`), {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` key:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` privateKey\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` dsaEncoding:\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"ieee-p1363\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` });\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\` return\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\\" \`oidc\_\\"}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\\"${\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`header\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`}\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\\"${\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`claims\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`}\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\\"${\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`signature\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`toString\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"base64url\\"\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`}\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\\"\`\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` },\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`};\`})}),\`\\n\`\]})})}),\_jsx(CodeBlock,{filename:\`Go\`,numberOfLines:\`36\`,language:\`go\`,children:\_jsx(\_components.pre,{className:\`shiki shiki-themes github-light-default dark-plus\`,style:{backgroundColor:\`#ffffff\`,\\"--shiki-dark-bg\\":\`#0B0C0E\`,color:\`#1f2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},language:\`go\`,children:\_jsxs(\_components.code,{language:\`go\`,numberOfLines:\`36\`,children:\[\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`import\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` (\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`context\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`crypto/ecdsa\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`time\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`github.com/golang-jwt/jwt/v4\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` (\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\`\\tpartnerID\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"user\_01abcdefghjkmnpqrstvwxyz00\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\`\\tissuer\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"https://auth.example.com\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\`\\tkeyID\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"0123456789abcdef0123456789abcdef01234567\\"\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`type\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` partnerTokenSource\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` struct\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tprivateKey\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` \*\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`ecdsa\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`PrivateKey\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`func\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` (\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`p \`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`partnerTokenSource\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`) \`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`IssueToken\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`ctx\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` context\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`Context\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`minDuration\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` time\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`Duration\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`force\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\` bool\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`) (\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`string\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`error\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`) {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tnow\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` time\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Now\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`()\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\ttoken\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`NewWithClaims\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`SigningMethodES256\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`RegisteredClaims\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`{\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\t\\tIssuer\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`: \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`issuer\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\t\\tSubject\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`: \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`partnerID\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`,\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\t\\tAudience\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`: \`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`ClaimStrings\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`{\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"namespace.so\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`},\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\t\\tIssuedAt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`: \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`NewNumericDate\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`now\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`),\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\t\\tExpiresAt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`: \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`NewNumericDate\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`now\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Add\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#B5CEA8\`},children:\`20\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` \*\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` time\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Minute\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)),\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`\\t})\`})}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\ttoken\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Header\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`\[\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"kid\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`\] \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` keyID\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tsigned\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` token\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`SignedString\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`p\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`privateKey\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`\\tif\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` !=\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` nil\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`\\t\\treturn\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`\\t}\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`\\treturn\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"oidc\_\\"\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` +\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` signed\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`nil\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`\]})})})\]}),\_jsxs(\_components.p,{children:\[\`The TypeScript SDK caches the token and calls \`,\_jsx(\_components.code,{children:\`issueToken\`}),\` again when fewer than five minutes of validity remain.\\nThe Go SDK calls \`,\_jsx(\_components.code,{children:\`IssueToken\`}),\` for every request, which signs a new token each time. Signing is local and cheap.\`\]})\]}),\_jsxs(Step,{title:\`Test Partner Token Source\`,id:\`test-partner-token-source\`,children:\[\_jsx(\_components.p,{children:\`Create a partner client with the token source, then list your tenants to confirm it authenticates.\\nListing tenants is a read-only call, which makes it a safe first request.\`}),\_jsxs(CodeGroup,{children:\[\_jsx(CodeBlock,{filename:\`TypeScript\`,numberOfLines:\`6\`,language:\`typescript\`,children:\_jsx(\_components.pre,{className:\`shiki shiki-themes github-light-default dark-plus\`,style:{backgroundColor:\`#ffffff\`,\\"--shiki-dark-bg\\":\`#0B0C0E\`,color:\`#1f2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},language:\`typescript\`,children:\_jsxs(\_components.code,{language:\`typescript\`,numberOfLines:\`6\`,children:\[\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`import\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` { \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`createIAMClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` } \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`from\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"@namespacelabs/sdk/api/iam\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`;\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\` partnerClient\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` =\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\` createIAMClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`({ \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`tokenSource:\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` partnerTokenSource\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` });\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`const\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` { \`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#4FC1FF\`},children:\`tenants\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` } \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`=\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\` await\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` partnerClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`tenants\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`listTenants\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`({ \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`limit:\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#B5CEA8\`},children:\` 10\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` });\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`console\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`log\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\\"\`Authenticated. Found \\"}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\\"${\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`tenants\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`length\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#569CD6\`},children:\`}\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\\" tenants.\`\\"}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`);\`})\]}),\`\\n\`\]})})}),\_jsx(CodeBlock,{filename:\`Go\`,numberOfLines:\`32\`,language:\`go\`,children:\_jsx(\_components.pre,{className:\`shiki shiki-themes github-light-default dark-plus\`,style:{backgroundColor:\`#ffffff\`,\\"--shiki-dark-bg\\":\`#0B0C0E\`,color:\`#1f2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},language:\`go\`,children:\_jsxs(\_components.code,{language:\`go\`,numberOfLines:\`32\`,children:\[\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`import\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` (\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`fmt\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`log\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`os\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`github.com/golang-jwt/jwt/v4\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\t\\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`namespacelabs.dev/integrations/api/iam\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tiamv1beta\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` \\"\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`namespacelabs.dev/integrations/proto/namespace/cloud/iam/v1beta\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`pemBytes\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` os\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`ReadFile\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"partner-key.pem\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`if\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` !=\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` nil\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tlog\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Fatal\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`privateKey\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` jwt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`ParseECPrivateKeyFromPEM\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`pemBytes\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`if\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` !=\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` nil\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tlog\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Fatal\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`partnerClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` iam\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`NewClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`ctx\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`partnerTokenSource\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`{\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`privateKey\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`})\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`if\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` !=\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` nil\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tlog\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Fatal\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`defer\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` partnerClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Close\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`()\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`resp\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` :=\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` partnerClient\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Tenants\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`ListTenants\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`ctx\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`\\u0026\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`iamv1beta\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#953800\`,\\"--shiki-dark\\":\`#4EC9B0\`},children:\`ListTenantsRequest\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`{\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Limit\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`: \`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#B5CEA8\`},children:\`10\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`})\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#C586C0\`},children:\`if\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\` err\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` !=\`}),\_jsx(\_components.span,{style:{color:\`#0550AE\`,\\"--shiki-dark\\":\`#569CD6\`},children:\` nil\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\` {\`})\]}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`\\tlog\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Fatal\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`err\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`)\`})\]}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`,children:\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`}\`})}),\`\\n\`,\_jsx(\_components.span,{className:\`line\`}),\`\\n\`,\_jsxs(\_components.span,{className:\`line\`,children:\[\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`fmt\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`Printf\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"Authenticated. Found \`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`%d\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\` tenants.\`}),\_jsx(\_components.span,{style:{color:\`#CF222E\`,\\"--shiki-dark\\":\`#D7BA7D\`},children:\`\\\\\\n\`}),\_jsx(\_components.span,{style:{color:\`#0A3069\`,\\"--shiki-dark\\":\`#CE9178\`},children:\`\\"\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`, \`}),\_jsx(\_components.span,{style:{color:\`#8250DF\`,\\"--shiki-dark\\":\`#DCDCAA\`},children:\`len\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`(\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`resp\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`.\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#9CDCFE\`},children:\`Tenants\`}),\_jsx(\_components.span,{style:{color:\`#1F2328\`,\\"--shiki-dark\\":\`#D4D4D4\`},children:\`))\`})\]}),\`\\n\`\]})})})\]}),\_jsxs(\_components.p,{children:\[\`A new partner account has no tenants yet, so \`,\_jsx(\_components.code,{children:\`Found 0 tenants\`}),\` is a successful result.\\nThe partner client exposes the tenant and token services, and it is the \`,\_jsx(\_components.code,{children:\`partnerClient\`}),\` that the rest of the multi-tenancy docs start from.\`\]})\]})\]}),\`\\n\`,\_jsx(Heading,{level:\`2\`,id:\`next-steps\`,children:\`Next steps\`}),\`\\n\`,\_jsxs(Columns,{cols:2,children:\[\_jsx(Card,{title:\`Create tenants\`,icon:\`building-2\`,href:\`/platform/tenants/create\`,children:\_jsx(\_components.p,{children:\`Give each of your customers their own tenant.\`})}),\_jsx(Card,{title:\`Tenant tokens\`,icon:\`ticket\`,href:\`/platform/authentication/tenant-tokens\`,children:\_jsx(\_components.p,{children:\`Act inside a tenant on behalf of a customer.\`})})\]})\]})}function MDXContent(props={}){const{wrapper:MDXLayout}={...\_provideComponents(),...props.components};return MDXLayout?\_jsx(MDXLayout,{...props,children:\_jsx(\_createMdxContent,{...props})}):\_createMdxContent(props)}return{default:MDXContent};function \_missingMdxReference(id,component){throw new Error(\`Expected \`+(component?\`component\`:\`object\`)+\\" \`\\"+id+\\"\` to be defined: you likely forgot to import, pass, or provide it.\\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Partner Credentials","sidebarTitle":"Partner credentials","description":"Sign short-lived partner tokens with your private key and create a client that manages your tenants.","noindex":true,"href":"/platform/authentication/partner-credentials"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":\[{"title":"Before you start","slug":"before-you-start","depth":2,"children":\[{"title":"Become a partner","slug":"become-a-partner","depth":3,"children":\[\]}\]},{"title":"Create a partner client","slug":"create-a-partner-client","depth":2,"children":\[{"title":"Add a client library","slug":"add-a-client-library","depth":3,"children":\[\]},{"title":"Sign partner tokens","slug":"sign-partner-tokens","depth":3,"children":\[\]},{"title":"Test Partner Token Source","slug":"test-partner-token-source","depth":3,"children":\[\]}\]},{"title":"Next steps","slug":"next-steps","depth":2,"children":\[\]}\],"codeExamples":{}},"jsLinks":\["/docs/\_mintlify/custom/namespace-labs/fa018fe02fd436c8/navigation.js","/docs/\_mintlify/custom/namespace-labs/4276600b7cb636ff/legacy-anchor-redirects.js"\],"subdomain":"namespace-labs","siteName":"Namespace Documentation","title":"Partner Credentials - Namespace Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-02T14:07:55.213Z","gitLastModified":"2026-10-02T14:07:39.000Z","originalFileLocation":"platform/authentication/partner-credentials.mdx"},"headHtml":"\\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\\"isDarkMode\\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\\u0026\\u0026p!=='dark'\\u0026\\u0026p!=='system')p=\\"system\\"}var r=p==='system'?(matchMedia(\\"(prefers-color-scheme: dark)\\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\\"data-theme-preference\\",p)})();\\u003c/script>\\u003cmeta data-mint-head name=\\"description\\" content=\\"Sign short-lived partner tokens with your private key and create a client that manages your tenants.\\">\\u003cmeta data-mint-head name=\\"application-name\\" content=\\"Namespace Documentation\\">\\u003cmeta data-mint-head name=\\"generator\\" content=\\"Mintlify\\">\\u003cmeta data-mint-head name=\\"robots\\" content=\\"noindex\\">\\u003clink data-mint-head rel=\\"icon\\" type=\\"image/png\\" sizes=\\"192x192\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon/android-chrome-192x192.png\\" media=\\"(prefers-color-scheme: light)\\">\\u003clink data-mint-head rel=\\"apple-touch-icon\\" type=\\"image/png\\" sizes=\\"180x180\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon/apple-touch-icon.png\\">\\u003clink data-mint-head rel=\\"icon\\" type=\\"image/png\\" sizes=\\"16x16\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon/favicon-16x16.png\\" media=\\"(prefers-color-scheme: light)\\">\\u003clink data-mint-head rel=\\"icon\\" type=\\"image/png\\" sizes=\\"32x32\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon/favicon-32x32.png\\" media=\\"(prefers-color-scheme: light)\\">\\u003clink data-mint-head rel=\\"shortcut icon\\" type=\\"image/x-icon\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon/favicon.ico\\" media=\\"(prefers-color-scheme: light)\\">\\u003clink data-mint-head rel=\\"icon\\" type=\\"image/png\\" sizes=\\"192x192\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon-dark/android-chrome-192x192.png\\" media=\\"(prefers-color-scheme: dark)\\">\\u003clink data-mint-head rel=\\"icon\\" type=\\"image/png\\" sizes=\\"16x16\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon-dark/favicon-16x16.png\\" media=\\"(prefers-color-scheme: dark)\\">\\u003clink data-mint-head rel=\\"icon\\" type=\\"image/png\\" sizes=\\"32x32\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon-dark/favicon-32x32.png\\" media=\\"(prefers-color-scheme: dark)\\">\\u003clink data-mint-head rel=\\"shortcut icon\\" type=\\"image/x-icon\\" href=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon-dark/favicon.ico\\" media=\\"(prefers-color-scheme: dark)\\">\\u003cmeta data-mint-head property=\\"og:title\\" content=\\"Partner Credentials - Namespace Documentation\\">\\u003cmeta data-mint-head property=\\"og:description\\" content=\\"Sign short-lived partner tokens with your private key and create a client that manages your tenants.\\">\\u003cmeta data-mint-head property=\\"og:site\_name\\" content=\\"Namespace Documentation\\">\\u003cmeta data-mint-head property=\\"og:url\\" content=\\"https://namespace.so/docs/platform/authentication/partner-credentials\\">\\u003cmeta data-mint-head property=\\"og:type\\" content=\\"website\\">\\u003cmeta data-mint-head property=\\"og:image\\" content=\\"https://namespace-labs.mintlify.app/\_mintlify/api/og/v2?division=Authentication\\u0026amp;title=Partner+Credentials\\u0026amp;description=Sign+short-lived+partner+tokens+with+your+private+key+and+create+a+client+that+manages+your+tenants.\\u0026amp;theme=1f89d53762a6d5304d1c63c4\\u0026amp;signature=f00ff13bd5558c3064d9634bd4eaf37b5e0979ff2f6196f24294dad89ca61b5a\\">\\u003cmeta data-mint-head property=\\"og:image:width\\" content=\\"1200\\">\\u003cmeta data-mint-head property=\\"og:image:height\\" content=\\"630\\">\\u003cmeta data-mint-head name=\\"twitter:card\\" content=\\"summary\_large\_image\\">\\u003cmeta data-mint-head name=\\"twitter:title\\" content=\\"Partner Credentials - Namespace Documentation\\">\\u003cmeta data-mint-head name=\\"twitter:description\\" content=\\"Sign short-lived partner tokens with your private key and create a client that manages your tenants.\\">\\u003cmeta data-mint-head name=\\"twitter:image\\" content=\\"https://namespace-labs.mintlify.app/\_mintlify/api/og/v2?division=Authentication\\u0026amp;title=Partner+Credentials\\u0026amp;description=Sign+short-lived+partner+tokens+with+your+private+key+and+create+a+client+that+manages+your+tenants.\\u0026amp;theme=1f89d53762a6d5304d1c63c4\\u0026amp;signature=f00ff13bd5558c3064d9634bd4eaf37b5e0979ff2f6196f24294dad89ca61b5a\\">\\u003cmeta data-mint-head name=\\"twitter:image:width\\" content=\\"1200\\">\\u003cmeta data-mint-head name=\\"twitter:image:height\\" content=\\"630\\">\\u003cmeta data-mint-head name=\\"msapplication-config\\" content=\\"/docs/mintlify-assets/\_mintlify/favicons/namespace-labs/kZKeJ4zhJEuE6\_kI/\_generated/favicon/browserconfig.xml\\">\\u003cmeta data-mint-head name=\\"apple-mobile-web-app-title\\" content=\\"Namespace Documentation\\">\\u003cmeta data-mint-head name=\\"msapplication-TileColor\\" content=\\"#1C32FF\\">\\u003clink data-mint-head rel=\\"canonical\\" href=\\"https://namespace.so/docs/platform/authentication/partner-credentials\\">\\u003clink data-mint-head rel=\\"alternate\\" type=\\"application/xml\\" href=\\"/docs/sitemap.xml\\">\\u003clink data-mint-head rel=\\"alternate\\" type=\\"text/markdown\\" href=\\"/docs/platform/authentication/partner-credentials.md\\">\\u003cscript data-mint-head type=\\"application/ld+json\\">{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebSite\\",\\"name\\":\\"Namespace Documentation\\",\\"creator\\":{\\"@type\\":\\"Organization\\",\\"name\\":\\"Mintlify\\",\\"url\\":\\"https://mintlify.com\\"}}\\u003c/script>","siteName":"Namespace Documentation","nav":{"global":{"anchors":\[{"anchor":"Changelog","icon":"history","href":"https://namespace.so/changelog"},{"anchor":"Trust Center (SOC2)","icon":"shield-check","href":"https://trust.namespace.so/"},{"anchor":"Status","icon":"activity","href":"https://namespace-status.com/"},{"anchor":"Support","icon":"message-circle","href":"https://namespace.so/support"}\]},"products":\[{"product":"Products","description":"Turnkey products built on the Namespace platform","pages":\[{"title":"Products","href":""}\]},{"product":"Platform","description":"Lower-level primitives to build your own","tabs":\[{"tab":"Documentation","icon":"book-open","pages":\[{"title":"Start building with Namespace","sidebarTitle":"Overview","href":"/platform"},{"group":"Build with Namespace","pages":\[{"group":"Authentication","icon":"key-round","pages":\[{"title":"Authentication for Platforms","sidebarTitle":"Overview","href":"/platform/authentication/index"},{"title":"Build on Your Own Workspace","sidebarTitle":"Build on your own workspace","description":"Start building with your nsc login and your own workspace, before your partner account is set up.","href":"/platform/authentication/local-development"},{"title":"Partner Credentials","sidebarTitle":"Partner credentials","href":"/platform/authentication/partner-credentials"},{"title":"Tenant Tokens","sidebarTitle":"Tenant tokens","description":"Issue short-lived tokens that act inside one tenant, narrow what they can do, and keep them fresh in long-running services.","href":"/platform/authentication/tenant-tokens"},{"title":"Revokable Tokens","sidebarTitle":"Revokable tokens","href":"/platform/authentication/revokable-tokens"}\]},{"group":"Multi-tenancy","icon":"users","pages":\[{"title":"Multi-tenancy","sidebarTitle":"Overview","href":"/platform/tenants/index"},{"title":"Create a Tenant with the Platform API","sidebarTitle":"Quickstart","href":"/platform/tenants/quickstart"},{"title":"Partner and Tenant Clients","sidebarTitle":"Partner and tenant clients","href":"/platform/tenants/clients"},{"title":"Create Tenants","sidebarTitle":"Create tenants","href":"/platform/tenants/create"},{"title":"List Tenants","sidebarTitle":"List and find tenants","href":"/platform/tenants/list"},{"title":"Update Tenants","sidebarTitle":"Update tenants","href":"/platform/tenants/update"},{"title":"Tenant Policies","sidebarTitle":"Tenant policies","href":"/platform/tenants/policies"},{"title":"Delete Tenants","sidebarTitle":"Delete tenants","href":"/platform/tenants/delete"}\]},{"group":"Instances","icon":"server","pages":\[{"title":"Create an Instance with the Platform API","sidebarTitle":"Quickstart","href":"/platform/instances/quickstart"},{"title":"Instance Configuration","sidebarTitle":"Configuration","href":"/platform/instances/configuration"},{"group":"Examples","icon":"code","pages":\[{"title":"Run a Command in an Instance","sidebarTitle":"Run commands","href":"/platform/instances/examples/run-commands"},{"title":"Create or Reuse an Instance","sidebarTitle":"Create or reuse","href":"/platform/instances/examples/create-or-reuse"},{"title":"SSH into a Container","sidebarTitle":"SSH access","href":"/platform/instances/examples/ssh"},{"title":"Authenticating to an Instance Endpoint","sidebarTitle":"Endpoint authentication","href":"/platform/instances/examples/endpoint-authentication"},{"title":"Creating Many Instances Concurrently","sidebarTitle":"Concurrent instances","href":"/platform/instances/examples/concurrency"}\]}\]}\]},{"group":"Building Blocks","pages":\[{"group":"Compute","icon":"cpu","pages":\[{"title":"Compute Platform","sidebarTitle":"Overview","href":"/platform/compute/index"},{"title":"Linux","href":"/platform/compute/linux"},{"title":"macOS","href":"/platform/compute/macos"},{"title":"Windows","href":"/platform/compute/windows"},{"title":"Observability","href":"/platform/compute/observability"},{"title":"SSH / Remote Display with Namespace Compute","sidebarTitle":"SSH / Remote Display","href":"/platform/compute/ssh-remote-display"},{"title":"Machine Shapes","href":"/platform/compute/machine-shapes"},{"title":"Resource Limits","href":"/platform/compute/resource-limits"}\]},{"group":"Storage","icon":"database","pages":\[{"title":"Storage","sidebarTitle":"Overview","href":"/platform/storage/index"},{"title":"Cache Volumes","href":"/platform/storage/cache-volumes"},{"title":"Container Registry","href":"/platform/storage/container-registry"},{"title":"Artifact Storage","href":"/platform/storage/artifact-storage"},{"title":"Secrets","href":"/platform/storage/secrets"}\]},{"group":"Networking","icon":"network","pages":\[{"title":"Networking","sidebarTitle":"Overview","href":"/platform/networking/index"},{"title":"Ingress","href":"/platform/networking/ingress"},{"title":"Network Performance Optimizations","sidebarTitle":"Performance","href":"/platform/networking/performance"},{"title":"Network Security","sidebarTitle":"Security","href":"/platform/networking/security"},{"title":"Egress policies","href":"/platform/networking/egress-policy"}\]}\]}\]}\]}\]},"title":"Partner Credentials - Namespace Documentation","buildId":"dpl\_GvhK4qVXq51DpfYJLCtPpYNN4YHN","deploymentId":"dpl\_GvhK4qVXq51DpfYJLCtPpYNN4YHN","dynamics":\[\],"chunks":\[\]}
