{{ 'devPortal.title' | translate }}

{{ 'devPortal.netNewChip' | translate }}

{{ 'devPortal.subtitle' | translate }}

@switch (activeTab()) { @case ('keys') {

{{ 'devPortal.keys.heading' | translate }}

@if (genPanelOpen()) {
@if (generatedKey(); as full) {

{{ 'devPortal.keys.oneTimeWarning' | translate }}

{{ full }}
} @else {
{{ 'devPortal.keys.field.scopes' | translate }}
    @for (scope of scopeOptions; track scope) {
  • }
}
}
    @for (key of apiKeys(); track key.id) {
  • {{ key.name }} {{ (key.environment === 'live' ? 'devPortal.env.live' : 'devPortal.env.test') | translate }} @if (key.deprecated) { {{ 'devPortal.keys.deprecated' | translate }} }
    {{ key.maskedKey }}
    {{ 'devPortal.keys.meta.scopes' | translate }}
    {{ scopeSummary(key.scopes) }}
    {{ 'devPortal.keys.meta.lastUsed' | translate }}
    {{ key.lastUsed }}
    {{ 'devPortal.keys.meta.status' | translate }}
    {{ (key.status === 'active' ? 'devPortal.status.active' : 'devPortal.status.revoked') | translate }}
    @if (key.status === 'active') {
    } @if (rotateConfirmId() === key.id) {

    {{ 'devPortal.keys.rotateConfirmBody' | translate }}

    } @if (revokeConfirmId() === key.id) {

    {{ 'devPortal.keys.revokeConfirmBody' | translate: { name: key.name } }}

    }
  • }
} @case ('webhooks') {

{{ 'devPortal.webhooks.heading' | translate }}

@if (addEndpointOpen()) {
{{ 'devPortal.webhooks.field.events' | translate }}
    @for (event of webhookEventOptions; track event) {
  • }
}
    @for (ep of webhookEndpoints(); track ep.id) {
  • {{ ep.url }} {{ (ep.status === 'active' ? 'devPortal.status.active' : 'devPortal.status.paused') | translate }}
    @for (event of ep.events; track event) { {{ event }} }
    {{ 'devPortal.webhooks.lastDelivery' | translate: { detail: ep.lastDeliveryLabel } }} {{ 'devPortal.webhooks.signingSecret' | translate }} {{ revealedSecretId() === ep.id ? 'whsec_9f1b2d4a6c8e0f2a' : ep.signingSecretMasked }}
  • }

{{ 'devPortal.webhooks.log.heading' | translate }}

{{ 'devPortal.webhooks.log.note' | translate }}

} @case ('limits') {

{{ 'devPortal.limits.heading' | translate }}

{{ 'devPortal.limits.recent429' | translate: { count: recent429 } }}

{{ 'devPortal.limits.governanceNote' | translate }}

@for (row of rateLimits; track row.group) { }
{{ 'devPortal.limits.col.group' | translate }} {{ 'devPortal.limits.col.limit' | translate }} {{ 'devPortal.limits.col.usage' | translate }}
{{ row.group }} {{ 'devPortal.limits.perMin' | translate: { n: row.limitPerMin } }}
{{ 'devPortal.limits.usageCaption' | translate: { used: row.usedThisMinute, limit: row.limitPerMin } }}

{{ 'devPortal.limits.policy.heading' | translate }}

{{ 'devPortal.limits.policy.burst' | translate }}
{{ throttlePolicy.burstAllowance }}
{{ 'devPortal.limits.policy.on429' | translate }}
{{ throttlePolicy.behaviour429 }}

{{ 'devPortal.limits.policy.overrides' | translate }}

    @for (ov of rateOverrides; track ov.key) {
  • {{ ov.key }} · {{ ov.group }} {{ 'devPortal.limits.perMin' | translate: { n: ov.limitPerMin } }}
  • }

{{ 'devPortal.limits.volume.heading' | translate }}

{{ 'devPortal.limits.volume.caption' | translate }}

} @case ('docs') {

{{ 'devPortal.docs.heading' | translate }}

{{ 'devPortal.docs.intro' | translate }}

    @for (group of docGroups; track group.id) {
  • }
{{ docExample().method }} {{ docExample().path }}

{{ 'devPortal.docs.request' | translate }}

{{ docExample().request }}

{{ 'devPortal.docs.response' | translate }}

{{ docExample().response }}
} @case ('changelog') {

{{ 'devPortal.changelog.heading' | translate }}

{{ 'devPortal.changelog.intro' | translate }}

    @for (entry of changelog; track entry.date + entry.text) {
  1. @if (entry.kind === 'deprecation') { {{ 'devPortal.changelog.deprecation' | translate }} }

    {{ entry.text }}

  2. }
} }