{
  "openapi": "3.1.0",
  "info": {
    "title": "Nokku API",
    "description": "The Nokku API provides access to core platform functionality via Connect RPC over HTTP.\n\n## Authentication\n\nAuthentication is supported via two methods:\n- **Cookie-based** (recommended for web applications): Session cookie automatically sent by browsers\n- **Bearer token** (for API clients): Include token in the `Authorization` header\n\nTokens use PASETO (Platform-Agnostic Security Tokens) for enhanced security.\n\n## Rate Limiting\n\nAPI requests are rate-limited per authenticated user. Check response headers for current limits:\n- `X-RateLimit-Limit`: Maximum requests per window\n- `X-RateLimit-Remaining`: Remaining requests in current window\n- `X-RateLimit-Reset`: Unix timestamp when the limit resets\n\n## Error Handling\n\nErrors follow the standard Connect RPC error format.\n",
    "version": "1.0.0",
    "contact": {
      "name": "Nokku Support",
      "email": "support@mizuchi.dev"
    }
  },
  "servers": [
    {
      "url": "https://app.nokku.sh",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "PASETO",
        "description": "PASETO token authentication. Include the token in the Authorization header:\n`Authorization: Bearer \u003ctoken\u003e`\n"
      },
      "CookieAuth": {
        "type": "apiKey",
        "in": "cookie",
        "name": "session",
        "description": "Cookie-based authentication (recommended for web applications).\nThe session cookie is automatically sent by browsers after login.\n"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "description": "Standard Connect RPC error response",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "description": "Connect error code (e.g., 16 = UNAUTHENTICATED, 7 = PERMISSION_DENIED)",
            "example": 16
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message",
            "example": "Authentication required"
          },
          "details": {
            "type": "array",
            "description": "Additional error details and metadata",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        }
      },
      "connect-protocol-version": {
        "type": "number",
        "title": "Connect-Protocol-Version",
        "enum": [
          1
        ],
        "description": "Define the version of the Connect protocol",
        "const": 1
      },
      "connect-timeout-header": {
        "type": "number",
        "title": "Connect-Timeout-Ms",
        "description": "Define the timeout, in ms"
      },
      "connect.error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "examples": [
              "not_found"
            ],
            "enum": [
              "canceled",
              "unknown",
              "invalid_argument",
              "deadline_exceeded",
              "not_found",
              "already_exists",
              "permission_denied",
              "resource_exhausted",
              "failed_precondition",
              "aborted",
              "out_of_range",
              "unimplemented",
              "internal",
              "unavailable",
              "data_loss",
              "unauthenticated"
            ],
            "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
          },
          "message": {
            "type": "string",
            "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/connect.error_details.Any"
            },
            "description": "A list of messages that carry the error details. There is no limit on the number of messages."
          }
        },
        "title": "Connect Error",
        "additionalProperties": true,
        "description": "Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation"
      },
      "connect.error_details.Any": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field."
          },
          "value": {
            "type": "string",
            "format": "binary",
            "description": "The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field."
          },
          "debug": {
            "oneOf": [
              {
                "type": "object",
                "title": "Any",
                "additionalProperties": true,
                "description": "Detailed error information."
              }
            ],
            "discriminator": {
              "propertyName": "type"
            },
            "title": "Debug",
            "description": "Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic."
          }
        },
        "additionalProperties": true,
        "description": "Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details."
      },
      "google.protobuf.Duration": {
        "type": "string",
        "format": "duration",
        "description": "A Duration represents a signed, fixed-length span of time represented\n as a count of seconds and fractions of seconds at nanosecond\n resolution. It is independent of any calendar and concepts like \"day\"\n or \"month\". It is related to Timestamp in that the difference between\n two Timestamp values is a Duration and it can be added or subtracted\n from a Timestamp. Range is approximately +-10,000 years.\n\n # Examples\n\n Example 1: Compute Duration from two Timestamps in pseudo code.\n\n     Timestamp start = ...;\n     Timestamp end = ...;\n     Duration duration = ...;\n\n     duration.seconds = end.seconds - start.seconds;\n     duration.nanos = end.nanos - start.nanos;\n\n     if (duration.seconds \u003c 0 \u0026\u0026 duration.nanos \u003e 0) {\n       duration.seconds += 1;\n       duration.nanos -= 1000000000;\n     } else if (duration.seconds \u003e 0 \u0026\u0026 duration.nanos \u003c 0) {\n       duration.seconds -= 1;\n       duration.nanos += 1000000000;\n     }\n\n Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n\n     Timestamp start = ...;\n     Duration duration = ...;\n     Timestamp end = ...;\n\n     end.seconds = start.seconds + duration.seconds;\n     end.nanos = start.nanos + duration.nanos;\n\n     if (end.nanos \u003c 0) {\n       end.seconds -= 1;\n       end.nanos += 1000000000;\n     } else if (end.nanos \u003e= 1000000000) {\n       end.seconds += 1;\n       end.nanos -= 1000000000;\n     }\n\n Example 3: Compute Duration from datetime.timedelta in Python.\n\n     td = datetime.timedelta(days=3, minutes=10)\n     duration = Duration()\n     duration.FromTimedelta(td)\n\n # JSON Mapping\n\n In JSON format, the Duration type is encoded as a string rather than an\n object, where the string ends in the suffix \"s\" (indicating seconds) and\n is preceded by the number of seconds, with nanoseconds expressed as\n fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n microsecond should be expressed in JSON format as \"3.000001s\"."
      },
      "google.protobuf.Timestamp": {
        "type": "string",
        "examples": [
          "2023-01-15T01:30:15.01Z",
          "2024-12-25T12:00:00Z"
        ],
        "format": "date-time",
        "description": "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(\u0026tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(\u0026ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n     Timestamp timestamp;\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n     long millis = System.currentTimeMillis();\n\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n     Instant now = Instant.now();\n\n     Timestamp timestamp =\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n             .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n     timestamp = Timestamp()\n     timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format."
      },
      "nokku.v1.AcceptInvitationRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "title": "token",
            "minLength": 1
          }
        },
        "title": "AcceptInvitationRequest",
        "additionalProperties": false
      },
      "nokku.v1.AcceptInvitationResponse": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          }
        },
        "title": "AcceptInvitationResponse",
        "additionalProperties": false
      },
      "nokku.v1.AddSubjectsToPrincipalRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "subjectIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "subject_ids",
            "maxItems": 50,
            "minItems": 1
          },
          "type": {
            "not": {
              "enum": [
                "PRINCIPAL_TYPE_UNSPECIFIED"
              ]
            },
            "title": "type",
            "$ref": "#/components/schemas/nokku.v1.PrincipalType"
          }
        },
        "title": "AddSubjectsToPrincipalRequest",
        "additionalProperties": false
      },
      "nokku.v1.AddSubjectsToPrincipalResponse": {
        "type": "object",
        "title": "AddSubjectsToPrincipalResponse",
        "additionalProperties": false
      },
      "nokku.v1.AddTeamMemberRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "teamId": {
            "type": "string",
            "title": "team_id",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "title": "user_id",
            "format": "uuid"
          }
        },
        "title": "AddTeamMemberRequest",
        "additionalProperties": false
      },
      "nokku.v1.AddTeamMemberResponse": {
        "type": "object",
        "title": "AddTeamMemberResponse",
        "additionalProperties": false
      },
      "nokku.v1.AuthorityType": {
        "type": "string",
        "title": "AuthorityType",
        "enum": [
          "AUTHORITY_TYPE_UNSPECIFIED",
          "AUTHORITY_TYPE_SSH",
          "AUTHORITY_TYPE_X509"
        ]
      },
      "nokku.v1.BackupCode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "usedAt": {
            "title": "used_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "BackupCode",
        "additionalProperties": false,
        "description": "Backup code messages -------------------------------------------------------"
      },
      "nokku.v1.CancelSubscriptionRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "immediate": {
            "type": "boolean",
            "title": "immediate"
          },
          "reason": {
            "type": "string",
            "title": "reason",
            "maxLength": 1000
          }
        },
        "title": "CancelSubscriptionRequest",
        "additionalProperties": false
      },
      "nokku.v1.CancelSubscriptionResponse": {
        "type": "object",
        "title": "CancelSubscriptionResponse",
        "additionalProperties": false
      },
      "nokku.v1.CertificateAuthority": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "description": {
            "type": "string",
            "title": "description"
          },
          "certificate": {
            "type": "string",
            "title": "certificate"
          },
          "publicKey": {
            "type": "string",
            "title": "public_key"
          },
          "serialNumber": {
            "type": "string",
            "title": "serial_number"
          },
          "subject": {
            "type": "string",
            "title": "subject"
          },
          "notBefore": {
            "title": "not_before",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "notAfter": {
            "title": "not_after",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "isActive": {
            "type": "boolean",
            "title": "is_active"
          },
          "isDefault": {
            "type": "boolean",
            "title": "is_default"
          },
          "keyBits": {
            "type": "integer",
            "title": "key_bits",
            "format": "int32"
          },
          "keyType": {
            "title": "key_type",
            "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
          },
          "allowedKeyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
            },
            "title": "allowed_key_types"
          },
          "lifetime": {
            "title": "lifetime",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userDefaultTtl": {
            "title": "user_default_ttl",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userMaxTtl": {
            "title": "user_max_ttl",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userExtensions": {
            "type": "object",
            "title": "user_extensions",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "userCriticalOptions": {
            "type": "object",
            "title": "user_critical_options",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "hostDefaultTtl": {
            "title": "host_default_ttl",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "hostMaxTtl": {
            "title": "host_max_ttl",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "authorityType": {
            "title": "authority_type",
            "$ref": "#/components/schemas/nokku.v1.AuthorityType"
          }
        },
        "title": "CertificateAuthority",
        "additionalProperties": false,
        "description": "Certificate Authority messages ---------------------------------------------"
      },
      "nokku.v1.CertificateAuthority.UserCriticalOptionsEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "UserCriticalOptionsEntry",
        "additionalProperties": false
      },
      "nokku.v1.CertificateAuthority.UserExtensionsEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "UserExtensionsEntry",
        "additionalProperties": false
      },
      "nokku.v1.CertificateKeyType": {
        "type": "string",
        "title": "CertificateKeyType",
        "enum": [
          "CERTIFICATE_KEY_TYPE_UNSPECIFIED",
          "CERTIFICATE_KEY_TYPE_RSA",
          "CERTIFICATE_KEY_TYPE_ECDSA",
          "CERTIFICATE_KEY_TYPE_ED25519"
        ]
      },
      "nokku.v1.CheckSSORequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "title": "email",
            "maxLength": 256,
            "format": "email"
          }
        },
        "title": "CheckSSORequest",
        "additionalProperties": false
      },
      "nokku.v1.CheckSSOResponse": {
        "type": "object",
        "properties": {
          "hasSso": {
            "type": "boolean",
            "title": "has_sso"
          },
          "enforceSso": {
            "type": "boolean",
            "title": "enforce_sso"
          },
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.SSOProvider"
            },
            "title": "providers"
          }
        },
        "title": "CheckSSOResponse",
        "additionalProperties": false
      },
      "nokku.v1.CloseRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "title": "reason"
          }
        },
        "title": "CloseRequest",
        "additionalProperties": false
      },
      "nokku.v1.CloseSessionRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "daemonId": {
            "type": "string",
            "title": "daemon_id",
            "format": "uuid"
          },
          "sessionId": {
            "type": "string",
            "title": "session_id",
            "format": "uuid"
          }
        },
        "title": "CloseSessionRequest",
        "required": [
          "daemonId",
          "sessionId"
        ],
        "additionalProperties": false
      },
      "nokku.v1.CloseSessionResponse": {
        "type": "object",
        "title": "CloseSessionResponse",
        "additionalProperties": false
      },
      "nokku.v1.ConnectRequest": {
        "type": "object",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "heartbeat": {
                "title": "heartbeat",
                "$ref": "#/components/schemas/nokku.v1.Heartbeat"
              }
            },
            "title": "heartbeat",
            "required": [
              "heartbeat"
            ]
          },
          {
            "type": "object",
            "properties": {
              "sync": {
                "title": "sync",
                "$ref": "#/components/schemas/nokku.v1.SyncReport"
              }
            },
            "title": "sync",
            "required": [
              "sync"
            ]
          }
        ],
        "title": "ConnectRequest",
        "additionalProperties": false
      },
      "nokku.v1.ConnectResponse": {
        "type": "object",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "heartbeatAck": {
                "title": "heartbeat_ack",
                "$ref": "#/components/schemas/nokku.v1.HeartbeatAck"
              }
            },
            "title": "heartbeat_ack",
            "required": [
              "heartbeatAck"
            ]
          },
          {
            "type": "object",
            "properties": {
              "notification": {
                "title": "notification",
                "$ref": "#/components/schemas/nokku.v1.Notification"
              }
            },
            "title": "notification",
            "required": [
              "notification"
            ]
          },
          {
            "type": "object",
            "properties": {
              "session": {
                "title": "session",
                "$ref": "#/components/schemas/nokku.v1.Session"
              }
            },
            "title": "session",
            "required": [
              "session"
            ]
          }
        ],
        "title": "ConnectResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateBackupCodesRequest": {
        "type": "object",
        "title": "CreateBackupCodesRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateBackupCodesResponse": {
        "type": "object",
        "properties": {
          "codes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "codes"
          }
        },
        "title": "CreateBackupCodesResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateCertificateAuthorityRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "keyType": {
            "not": {
              "enum": [
                "CERTIFICATE_KEY_TYPE_UNSPECIFIED"
              ]
            },
            "title": "key_type",
            "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
          },
          "keyBits": {
            "type": "integer",
            "title": "key_bits",
            "format": "int32"
          },
          "isDefault": {
            "type": "boolean",
            "title": "is_default"
          },
          "allowedKeyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
            },
            "title": "allowed_key_types"
          },
          "lifetime": {
            "title": "lifetime",
            "description": "duration.gte = 730h0m0s\nduration.gte_lt = 730h0m0s\nduration.gte_lt_exclusive = 730h0m0s\nduration.gte_lte = 730h0m0s\nduration.gte_lte_exclusive = 730h0m0s\nduration.lte = 87600h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userDefaultTtl": {
            "title": "user_default_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userMaxTtl": {
            "title": "user_max_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "hostDefaultTtl": {
            "title": "host_default_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "hostMaxTtl": {
            "title": "host_max_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userExtensions": {
            "type": "object",
            "title": "user_extensions",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "userCriticalOptions": {
            "type": "object",
            "title": "user_critical_options",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "authorityType": {
            "title": "authority_type",
            "$ref": "#/components/schemas/nokku.v1.AuthorityType"
          }
        },
        "title": "CreateCertificateAuthorityRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateCertificateAuthorityRequest.UserCriticalOptionsEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "UserCriticalOptionsEntry",
        "additionalProperties": false
      },
      "nokku.v1.CreateCertificateAuthorityRequest.UserExtensionsEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "UserExtensionsEntry",
        "additionalProperties": false
      },
      "nokku.v1.CreateCertificateAuthorityResponse": {
        "type": "object",
        "properties": {
          "certificateAuthority": {
            "title": "certificate_authority",
            "$ref": "#/components/schemas/nokku.v1.CertificateAuthority"
          }
        },
        "title": "CreateCertificateAuthorityResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateCheckoutRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "CreateCheckoutRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateCheckoutResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "title": "url"
          }
        },
        "title": "CreateCheckoutResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreatePortalRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "CreatePortalRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreatePortalResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "title": "url"
          }
        },
        "title": "CreatePortalResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateServiceAccountRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "roleName": {
            "type": "string",
            "title": "role_name",
            "pattern": "^(viewer|editor)?$"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "CreateServiceAccountRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateServiceAccountResponse": {
        "type": "object",
        "properties": {
          "serviceAccount": {
            "title": "service_account",
            "$ref": "#/components/schemas/nokku.v1.ServiceAccount"
          },
          "token": {
            "type": "string",
            "title": "token"
          }
        },
        "title": "CreateServiceAccountResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateSessionRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "daemonId": {
            "type": "string",
            "title": "daemon_id",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "title": "username",
            "maxLength": 32,
            "minLength": 1,
            "pattern": "^[a-z_][a-z0-9-_]*\\$?$"
          }
        },
        "title": "CreateSessionRequest",
        "required": [
          "daemonId"
        ],
        "additionalProperties": false
      },
      "nokku.v1.CreateSessionResponse": {
        "type": "object",
        "properties": {
          "session": {
            "title": "session",
            "$ref": "#/components/schemas/nokku.v1.Session"
          },
          "daemonName": {
            "type": "string",
            "title": "daemon_name"
          }
        },
        "title": "CreateSessionResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateTargetRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "caId": {
            "type": "string",
            "title": "ca_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "endpoints"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "CreateTargetRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateTargetResponse": {
        "type": "object",
        "properties": {
          "target": {
            "title": "target",
            "$ref": "#/components/schemas/nokku.v1.Target"
          }
        },
        "title": "CreateTargetResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateTeamRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "CreateTeamRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateTeamResponse": {
        "type": "object",
        "properties": {
          "team": {
            "title": "team",
            "$ref": "#/components/schemas/nokku.v1.Team"
          }
        },
        "title": "CreateTeamResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateWorkspaceDomainRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "title": "domain",
            "maxLength": 253,
            "minLength": 4,
            "pattern": "^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$",
            "format": "hostname"
          }
        },
        "title": "CreateWorkspaceDomainRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateWorkspaceDomainResponse": {
        "type": "object",
        "properties": {
          "domain": {
            "title": "domain",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceDomain"
          }
        },
        "title": "CreateWorkspaceDomainResponse",
        "additionalProperties": false
      },
      "nokku.v1.CreateWorkspaceRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 3
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          }
        },
        "title": "CreateWorkspaceRequest",
        "additionalProperties": false
      },
      "nokku.v1.CreateWorkspaceResponse": {
        "type": "object",
        "properties": {
          "workspace": {
            "title": "workspace",
            "$ref": "#/components/schemas/nokku.v1.Workspace"
          }
        },
        "title": "CreateWorkspaceResponse",
        "additionalProperties": false
      },
      "nokku.v1.Daemon": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "online": {
            "type": "boolean",
            "title": "online"
          },
          "status": {
            "title": "status",
            "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
          },
          "config": {
            "title": "config",
            "$ref": "#/components/schemas/nokku.v1.DaemonConfig"
          },
          "metadata": {
            "type": "object",
            "title": "metadata",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "Daemon",
        "additionalProperties": false
      },
      "nokku.v1.Daemon.MetadataEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "MetadataEntry",
        "additionalProperties": false
      },
      "nokku.v1.DaemonConfig": {
        "type": "object",
        "properties": {
          "recordSessions": {
            "type": "boolean",
            "title": "record_sessions"
          }
        },
        "title": "DaemonConfig",
        "additionalProperties": false
      },
      "nokku.v1.DaemonStatus": {
        "type": "string",
        "title": "DaemonStatus",
        "enum": [
          "DAEMON_STATUS_UNSPECIFIED",
          "DAEMON_STATUS_PENDING",
          "DAEMON_STATUS_ACCEPTED",
          "DAEMON_STATUS_REJECTED"
        ]
      },
      "nokku.v1.DeleteAccountRequest": {
        "type": "object",
        "title": "DeleteAccountRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteAccountResponse": {
        "type": "object",
        "title": "DeleteAccountResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteBackupCodesRequest": {
        "type": "object",
        "title": "DeleteBackupCodesRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteBackupCodesResponse": {
        "type": "object",
        "title": "DeleteBackupCodesResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteCertificateAuthorityRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "DeleteCertificateAuthorityRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteCertificateAuthorityResponse": {
        "type": "object",
        "title": "DeleteCertificateAuthorityResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteDaemonRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "DeleteDaemonRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteDaemonResponse": {
        "type": "object",
        "title": "DeleteDaemonResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeletePasskeyRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id",
            "minLength": 1
          }
        },
        "title": "DeletePasskeyRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeletePasskeyResponse": {
        "type": "object",
        "title": "DeletePasskeyResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeletePasswordRequest": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "title": "current_password",
            "minLength": 1
          }
        },
        "title": "DeletePasswordRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeletePasswordResponse": {
        "type": "object",
        "title": "DeletePasswordResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteServiceAccountRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "DeleteServiceAccountRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteServiceAccountResponse": {
        "type": "object",
        "title": "DeleteServiceAccountResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteTargetRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "DeleteTargetRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteTargetResponse": {
        "type": "object",
        "title": "DeleteTargetResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteTeamRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "DeleteTeamRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteTeamResponse": {
        "type": "object",
        "title": "DeleteTeamResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteUserDeviceRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "DeleteUserDeviceRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteUserDeviceResponse": {
        "type": "object",
        "title": "DeleteUserDeviceResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteWorkspaceDomainRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "title": "domain",
            "format": "hostname"
          }
        },
        "title": "DeleteWorkspaceDomainRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteWorkspaceDomainResponse": {
        "type": "object",
        "title": "DeleteWorkspaceDomainResponse",
        "additionalProperties": false
      },
      "nokku.v1.DeleteWorkspaceRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "DeleteWorkspaceRequest",
        "additionalProperties": false
      },
      "nokku.v1.DeleteWorkspaceResponse": {
        "type": "object",
        "title": "DeleteWorkspaceResponse",
        "additionalProperties": false
      },
      "nokku.v1.EnrollDaemonRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "title": "token",
            "minLength": 1
          },
          "caId": {
            "type": "string",
            "title": "ca_id"
          },
          "authMethod": {
            "type": "string",
            "title": "auth_method"
          },
          "authPubkey": {
            "type": "string",
            "title": "auth_pubkey"
          }
        },
        "title": "EnrollDaemonRequest",
        "additionalProperties": false
      },
      "nokku.v1.EnrollDaemonResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "targetId": {
            "type": "string",
            "title": "target_id"
          },
          "status": {
            "title": "status",
            "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
          },
          "config": {
            "title": "config",
            "$ref": "#/components/schemas/nokku.v1.DaemonConfig"
          }
        },
        "title": "EnrollDaemonResponse",
        "additionalProperties": false
      },
      "nokku.v1.EventLog": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "actorId": {
            "type": "string",
            "title": "actor_id"
          },
          "actorType": {
            "type": "string",
            "title": "actor_type"
          },
          "action": {
            "type": "string",
            "title": "action"
          },
          "ipAddress": {
            "type": "string",
            "title": "ip_address"
          },
          "userAgent": {
            "type": "string",
            "title": "user_agent"
          },
          "statusCode": {
            "type": "string",
            "title": "status_code"
          },
          "timestamp": {
            "title": "timestamp",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "EventLog",
        "additionalProperties": false
      },
      "nokku.v1.ExportAuditLogsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "format": {
            "title": "format",
            "$ref": "#/components/schemas/nokku.v1.ExportAuditLogsRequest.Format"
          },
          "startDate": {
            "title": "start_date",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "endDate": {
            "title": "end_date",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "ExportAuditLogsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ExportAuditLogsRequest.Format": {
        "type": "string",
        "title": "Format",
        "enum": [
          "FORMAT_UNSPECIFIED",
          "FORMAT_CSV",
          "FORMAT_JSON"
        ]
      },
      "nokku.v1.ExportAuditLogsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string",
            "title": "data",
            "format": "byte"
          },
          "filename": {
            "type": "string",
            "title": "filename"
          },
          "contentType": {
            "type": "string",
            "title": "content_type"
          }
        },
        "title": "ExportAuditLogsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ForgotPasswordRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "title": "email",
            "maxLength": 256,
            "format": "email"
          }
        },
        "title": "ForgotPasswordRequest",
        "additionalProperties": false
      },
      "nokku.v1.ForgotPasswordResponse": {
        "type": "object",
        "title": "ForgotPasswordResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetBillingRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "GetBillingRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetBillingResponse": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "title": "customer_id"
          },
          "productId": {
            "type": "string",
            "title": "product_id"
          },
          "productName": {
            "type": "string",
            "title": "product_name"
          },
          "status": {
            "type": "string",
            "title": "status"
          },
          "billingEnabled": {
            "type": "boolean",
            "title": "billing_enabled"
          },
          "cancelAtPeriodEnd": {
            "type": "boolean",
            "title": "cancel_at_period_end"
          },
          "metadata": {
            "type": "object",
            "title": "metadata",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "counts": {
            "title": "counts",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceCounts"
          },
          "currentPeriodEnd": {
            "title": "current_period_end",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "GetBillingResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetBillingResponse.MetadataEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "MetadataEntry",
        "additionalProperties": false
      },
      "nokku.v1.GetCertificateAuthorityRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "GetCertificateAuthorityRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetCertificateAuthorityResponse": {
        "type": "object",
        "properties": {
          "certificateAuthority": {
            "title": "certificate_authority",
            "$ref": "#/components/schemas/nokku.v1.CertificateAuthority"
          }
        },
        "title": "GetCertificateAuthorityResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetDaemonRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "GetDaemonRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetDaemonResponse": {
        "type": "object",
        "properties": {
          "daemon": {
            "title": "daemon",
            "$ref": "#/components/schemas/nokku.v1.Daemon"
          }
        },
        "title": "GetDaemonResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetInvitationRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "title": "token",
            "minLength": 1
          }
        },
        "title": "GetInvitationRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetInvitationResponse": {
        "type": "object",
        "properties": {
          "workspaceName": {
            "type": "string",
            "title": "workspace_name"
          },
          "workspaceDescription": {
            "type": "string",
            "title": "workspace_description"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "GetInvitationResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetLicenseRequest": {
        "type": "object",
        "title": "GetLicenseRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetLicenseResponse": {
        "type": "object",
        "properties": {
          "plan": {
            "type": "string",
            "title": "plan"
          },
          "active": {
            "type": "boolean",
            "title": "active"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "GetLicenseResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetOIDCProviderRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "GetOIDCProviderRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetOIDCProviderResponse": {
        "type": "object",
        "properties": {
          "oidcProvider": {
            "title": "oidc_provider",
            "$ref": "#/components/schemas/nokku.v1.OIDCProvider"
          }
        },
        "title": "GetOIDCProviderResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetSAMLProviderRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "GetSAMLProviderRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetSAMLProviderResponse": {
        "type": "object",
        "properties": {
          "samlProvider": {
            "title": "saml_provider",
            "$ref": "#/components/schemas/nokku.v1.SAMLProvider"
          }
        },
        "title": "GetSAMLProviderResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetServiceAccountRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "GetServiceAccountRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetServiceAccountResponse": {
        "type": "object",
        "properties": {
          "serviceAccount": {
            "title": "service_account",
            "$ref": "#/components/schemas/nokku.v1.ServiceAccount"
          }
        },
        "title": "GetServiceAccountResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetSubjectAccessRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "subjectId": {
            "type": "string",
            "title": "subject_id",
            "format": "uuid"
          }
        },
        "title": "GetSubjectAccessRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetSubjectAccessResponse": {
        "type": "object",
        "properties": {
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Target"
            },
            "title": "targets"
          },
          "daemons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Daemon"
            },
            "title": "daemons"
          },
          "certificateAuthorities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.CertificateAuthority"
            },
            "title": "certificate_authorities"
          }
        },
        "title": "GetSubjectAccessResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetTargetFiltersRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "GetTargetFiltersRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetTargetFiltersResponse": {
        "type": "object",
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          },
          "principals": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "principals"
          }
        },
        "title": "GetTargetFiltersResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetTargetRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "GetTargetRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetTargetResponse": {
        "type": "object",
        "properties": {
          "target": {
            "title": "target",
            "$ref": "#/components/schemas/nokku.v1.Target"
          }
        },
        "title": "GetTargetResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetTeamRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          }
        },
        "title": "GetTeamRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetTeamResponse": {
        "type": "object",
        "properties": {
          "team": {
            "title": "team",
            "$ref": "#/components/schemas/nokku.v1.Team"
          }
        },
        "title": "GetTeamResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetVersionRequest": {
        "type": "object",
        "title": "GetVersionRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetVersionResponse": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "title": "version"
          }
        },
        "title": "GetVersionResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetWorkspaceDomainRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "title": "domain",
            "format": "hostname"
          }
        },
        "title": "GetWorkspaceDomainRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetWorkspaceDomainResponse": {
        "type": "object",
        "properties": {
          "domain": {
            "title": "domain",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceDomain"
          }
        },
        "title": "GetWorkspaceDomainResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetWorkspaceMemberRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "title": "user_id",
            "format": "uuid"
          }
        },
        "title": "GetWorkspaceMemberRequest",
        "additionalProperties": false,
        "description": "Members --------------------------------------------------------------------"
      },
      "nokku.v1.GetWorkspaceMemberResponse": {
        "type": "object",
        "properties": {
          "member": {
            "title": "member",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceMember"
          }
        },
        "title": "GetWorkspaceMemberResponse",
        "additionalProperties": false
      },
      "nokku.v1.GetWorkspaceRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "GetWorkspaceRequest",
        "additionalProperties": false
      },
      "nokku.v1.GetWorkspaceResponse": {
        "type": "object",
        "properties": {
          "workspace": {
            "title": "workspace",
            "$ref": "#/components/schemas/nokku.v1.Workspace"
          }
        },
        "title": "GetWorkspaceResponse",
        "additionalProperties": false
      },
      "nokku.v1.Heartbeat": {
        "type": "object",
        "title": "Heartbeat",
        "additionalProperties": false
      },
      "nokku.v1.HeartbeatAck": {
        "type": "object",
        "title": "HeartbeatAck",
        "additionalProperties": false
      },
      "nokku.v1.ListAuditLogsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "search": {
            "type": "string",
            "title": "search",
            "description": "Filters (optional)"
          },
          "actorIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "actor_ids"
          },
          "actorTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "actor_types"
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "actions"
          },
          "startDate": {
            "title": "start_date",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "endDate": {
            "title": "end_date",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "ListAuditLogsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListAuditLogsResponse": {
        "type": "object",
        "properties": {
          "logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.EventLog"
            },
            "title": "logs"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListAuditLogsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListBackupCodesRequest": {
        "type": "object",
        "title": "ListBackupCodesRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListBackupCodesResponse": {
        "type": "object",
        "properties": {
          "codes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.BackupCode"
            },
            "title": "codes"
          }
        },
        "title": "ListBackupCodesResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListCertificateAuthoritiesRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "ListCertificateAuthoritiesRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListCertificateAuthoritiesResponse": {
        "type": "object",
        "properties": {
          "certificateAuthorities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.CertificateAuthority"
            },
            "title": "certificate_authorities"
          }
        },
        "title": "ListCertificateAuthoritiesResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListDaemonsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "query": {
            "type": "string",
            "title": "query"
          },
          "online": {
            "type": "boolean",
            "title": "online"
          },
          "status": {
            "title": "status",
            "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
          }
        },
        "title": "ListDaemonsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListDaemonsResponse": {
        "type": "object",
        "properties": {
          "daemons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Daemon"
            },
            "title": "daemons"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListDaemonsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListLinkedAccountsRequest": {
        "type": "object",
        "title": "ListLinkedAccountsRequest",
        "additionalProperties": false,
        "description": "OAuth linked accounts -------------------------------------------------------"
      },
      "nokku.v1.ListLinkedAccountsResponse": {
        "type": "object",
        "properties": {
          "accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.OAuthIdentity"
            },
            "title": "accounts"
          }
        },
        "title": "ListLinkedAccountsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListPasskeysRequest": {
        "type": "object",
        "title": "ListPasskeysRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListPasskeysResponse": {
        "type": "object",
        "properties": {
          "passkeys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Passkey"
            },
            "title": "passkeys"
          }
        },
        "title": "ListPasskeysResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListPrincipalsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "targetId": {
            "type": "string",
            "title": "target_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "query": {
            "type": "string",
            "title": "query"
          },
          "type": {
            "not": {
              "enum": [
                "PRINCIPAL_TYPE_UNSPECIFIED"
              ]
            },
            "title": "type",
            "$ref": "#/components/schemas/nokku.v1.PrincipalType"
          }
        },
        "title": "ListPrincipalsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListPrincipalsResponse": {
        "type": "object",
        "properties": {
          "principals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Principal"
            },
            "title": "principals"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListPrincipalsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListRolesRequest": {
        "type": "object",
        "title": "ListRolesRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListRolesResponse": {
        "type": "object",
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Role"
            },
            "title": "roles"
          }
        },
        "title": "ListRolesResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListServiceAccountsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "query": {
            "type": "string",
            "title": "query"
          },
          "roleName": {
            "type": "string",
            "title": "role_name"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "ListServiceAccountsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListServiceAccountsResponse": {
        "type": "object",
        "properties": {
          "serviceAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.ServiceAccount"
            },
            "title": "service_accounts"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListServiceAccountsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListSessionsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "daemonId": {
            "type": "string",
            "title": "daemon_id",
            "format": "uuid"
          }
        },
        "title": "ListSessionsRequest",
        "required": [
          "daemonId"
        ],
        "additionalProperties": false
      },
      "nokku.v1.ListSessionsResponse": {
        "type": "object",
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Session"
            },
            "title": "sessions"
          },
          "daemonName": {
            "type": "string",
            "title": "daemon_name"
          }
        },
        "title": "ListSessionsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListTargetsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "query": {
            "type": "string",
            "title": "query"
          },
          "daemonId": {
            "type": "string",
            "title": "daemon_id"
          },
          "caId": {
            "type": "string",
            "title": "ca_id"
          },
          "principals": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "principals"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "ListTargetsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListTargetsResponse": {
        "type": "object",
        "properties": {
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Target"
            },
            "title": "targets"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListTargetsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListTeamsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "query": {
            "type": "string",
            "title": "query"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "ListTeamsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListTeamsResponse": {
        "type": "object",
        "properties": {
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Team"
            },
            "title": "teams"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListTeamsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListUserDevicesRequest": {
        "type": "object",
        "title": "ListUserDevicesRequest",
        "additionalProperties": false,
        "description": "Device tokens --------------------------------------------------------------"
      },
      "nokku.v1.ListUserDevicesResponse": {
        "type": "object",
        "properties": {
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.UserDevice"
            },
            "title": "devices"
          }
        },
        "title": "ListUserDevicesResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListWorkspaceDomainsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "ListWorkspaceDomainsRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListWorkspaceDomainsResponse": {
        "type": "object",
        "properties": {
          "domains": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.WorkspaceDomain"
            },
            "title": "domains"
          }
        },
        "title": "ListWorkspaceDomainsResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListWorkspaceMembersRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "limit": {
            "type": "integer",
            "title": "limit",
            "maximum": 100,
            "minimum": 1,
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "title": "offset",
            "minimum": 0,
            "format": "int32"
          },
          "query": {
            "type": "string",
            "title": "query"
          },
          "roleName": {
            "type": "string",
            "title": "role_name"
          },
          "teamIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "team_ids"
          }
        },
        "title": "ListWorkspaceMembersRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListWorkspaceMembersResponse": {
        "type": "object",
        "properties": {
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.WorkspaceMember"
            },
            "title": "members"
          },
          "total": {
            "type": "integer",
            "title": "total",
            "format": "int32"
          }
        },
        "title": "ListWorkspaceMembersResponse",
        "additionalProperties": false
      },
      "nokku.v1.ListWorkspacesRequest": {
        "type": "object",
        "title": "ListWorkspacesRequest",
        "additionalProperties": false
      },
      "nokku.v1.ListWorkspacesResponse": {
        "type": "object",
        "properties": {
          "workspaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Workspace"
            },
            "title": "workspaces"
          }
        },
        "title": "ListWorkspacesResponse",
        "additionalProperties": false
      },
      "nokku.v1.LoginRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "title": "email",
            "format": "email"
          },
          "password": {
            "type": "string",
            "title": "password",
            "minLength": 1
          }
        },
        "title": "LoginRequest",
        "additionalProperties": false
      },
      "nokku.v1.LoginResponse": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "title": "access_token"
          },
          "refreshToken": {
            "type": "string",
            "title": "refresh_token"
          }
        },
        "title": "LoginResponse",
        "additionalProperties": false
      },
      "nokku.v1.LoginWithBackupCodeRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "title": "email",
            "format": "email"
          },
          "code": {
            "type": "string",
            "title": "code",
            "minLength": 1
          }
        },
        "title": "LoginWithBackupCodeRequest",
        "additionalProperties": false
      },
      "nokku.v1.LoginWithBackupCodeResponse": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "title": "access_token"
          },
          "refreshToken": {
            "type": "string",
            "title": "refresh_token"
          }
        },
        "title": "LoginWithBackupCodeResponse",
        "additionalProperties": false
      },
      "nokku.v1.LogoutRequest": {
        "type": "object",
        "title": "LogoutRequest",
        "additionalProperties": false
      },
      "nokku.v1.LogoutResponse": {
        "type": "object",
        "title": "LogoutResponse",
        "additionalProperties": false
      },
      "nokku.v1.Notification": {
        "type": "object",
        "properties": {
          "eventType": {
            "title": "event_type",
            "$ref": "#/components/schemas/nokku.v1.Notification.EventType"
          },
          "daemonId": {
            "type": "string",
            "title": "daemon_id"
          },
          "status": {
            "title": "status",
            "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
          }
        },
        "title": "Notification",
        "additionalProperties": false
      },
      "nokku.v1.Notification.EventType": {
        "type": "string",
        "title": "EventType",
        "enum": [
          "EVENT_TYPE_UNSPECIFIED",
          "EVENT_TYPE_STATUS",
          "EVENT_TYPE_PRINCIPALS",
          "EVENT_TYPE_CERTIFICATES",
          "EVENT_TYPE_SYNC_REQUEST"
        ]
      },
      "nokku.v1.OAuthIdentity": {
        "type": "object",
        "properties": {
          "providerId": {
            "type": "string",
            "title": "provider_id"
          },
          "provider": {
            "type": "string",
            "title": "provider"
          },
          "providerEmail": {
            "type": "string",
            "title": "provider_email"
          },
          "providerUsername": {
            "type": "string",
            "title": "provider_username"
          },
          "protocol": {
            "type": "string",
            "title": "protocol",
            "description": "'oauth' | 'oidc' | 'saml'"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "OAuthIdentity",
        "additionalProperties": false
      },
      "nokku.v1.OIDCProvider": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "issuerUrl": {
            "type": "string",
            "title": "issuer_url"
          },
          "clientId": {
            "type": "string",
            "title": "client_id"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "scopes"
          },
          "emailClaim": {
            "type": "string",
            "title": "email_claim"
          },
          "nameClaim": {
            "type": "string",
            "title": "name_claim"
          },
          "usernameClaim": {
            "type": "string",
            "title": "username_claim"
          },
          "pictureClaim": {
            "type": "string",
            "title": "picture_claim"
          },
          "enforceSso": {
            "type": "boolean",
            "title": "enforce_sso"
          },
          "allowJitProvisioning": {
            "type": "boolean",
            "title": "allow_jit_provisioning"
          },
          "usePkce": {
            "type": "boolean",
            "title": "use_pkce"
          },
          "isActive": {
            "type": "boolean",
            "title": "is_active"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "OIDCProvider",
        "additionalProperties": false
      },
      "nokku.v1.Passkey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "lastUsedAt": {
            "title": "last_used_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "Passkey",
        "additionalProperties": false,
        "description": "Passkey messages -----------------------------------------------------------"
      },
      "nokku.v1.Principal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "targetId": {
            "type": "string",
            "title": "target_id"
          },
          "username": {
            "type": "string",
            "title": "username"
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "user_ids"
          },
          "teamIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "team_ids"
          },
          "serviceAccountIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "service_account_ids"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "Principal",
        "additionalProperties": false
      },
      "nokku.v1.PrincipalType": {
        "type": "string",
        "title": "PrincipalType",
        "enum": [
          "PRINCIPAL_TYPE_UNSPECIFIED",
          "PRINCIPAL_TYPE_USER",
          "PRINCIPAL_TYPE_TEAM",
          "PRINCIPAL_TYPE_SERVICE_ACCOUNT"
        ]
      },
      "nokku.v1.PrincipalUsers": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "title": "username"
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "ids"
          }
        },
        "title": "PrincipalUsers",
        "additionalProperties": false
      },
      "nokku.v1.RefreshEnrollTokenRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "RefreshEnrollTokenRequest",
        "additionalProperties": false
      },
      "nokku.v1.RefreshEnrollTokenResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "title": "token"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "RefreshEnrollTokenResponse",
        "additionalProperties": false
      },
      "nokku.v1.RefreshInviteTokenRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "RefreshInviteTokenRequest",
        "additionalProperties": false
      },
      "nokku.v1.RefreshInviteTokenResponse": {
        "type": "object",
        "properties": {
          "link": {
            "type": "string",
            "title": "link"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "RefreshInviteTokenResponse",
        "additionalProperties": false
      },
      "nokku.v1.RefreshTokenRequest": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string",
            "title": "refresh_token"
          }
        },
        "title": "RefreshTokenRequest",
        "additionalProperties": false
      },
      "nokku.v1.RefreshTokenResponse": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "title": "access_token"
          }
        },
        "title": "RefreshTokenResponse",
        "additionalProperties": false
      },
      "nokku.v1.RegenerateWorkspaceDomainTokenRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "title": "domain",
            "format": "hostname"
          }
        },
        "title": "RegenerateWorkspaceDomainTokenRequest",
        "additionalProperties": false
      },
      "nokku.v1.RegenerateWorkspaceDomainTokenResponse": {
        "type": "object",
        "properties": {
          "domain": {
            "title": "domain",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceDomain"
          }
        },
        "title": "RegenerateWorkspaceDomainTokenResponse",
        "additionalProperties": false
      },
      "nokku.v1.RegisterRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 3
          },
          "email": {
            "type": "string",
            "title": "email",
            "maxLength": 256,
            "format": "email"
          },
          "username": {
            "type": "string",
            "title": "username",
            "maxLength": 32,
            "minLength": 3,
            "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9-_])*[a-zA-Z0-9]$"
          },
          "password": {
            "type": "string",
            "title": "password",
            "maxLength": 256,
            "minLength": 8
          }
        },
        "title": "RegisterRequest",
        "additionalProperties": false,
        "description": "Authentication requests/responses"
      },
      "nokku.v1.RegisterResponse": {
        "type": "object",
        "title": "RegisterResponse",
        "additionalProperties": false
      },
      "nokku.v1.RemoveSubjectsFromPrincipalRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "subjectIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "title": "subject_ids",
            "maxItems": 50,
            "minItems": 1
          },
          "type": {
            "not": {
              "enum": [
                "PRINCIPAL_TYPE_UNSPECIFIED"
              ]
            },
            "title": "type",
            "$ref": "#/components/schemas/nokku.v1.PrincipalType"
          }
        },
        "title": "RemoveSubjectsFromPrincipalRequest",
        "additionalProperties": false
      },
      "nokku.v1.RemoveSubjectsFromPrincipalResponse": {
        "type": "object",
        "title": "RemoveSubjectsFromPrincipalResponse",
        "additionalProperties": false
      },
      "nokku.v1.RemoveTeamMemberRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "teamId": {
            "type": "string",
            "title": "team_id",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "title": "user_id",
            "format": "uuid"
          }
        },
        "title": "RemoveTeamMemberRequest",
        "additionalProperties": false
      },
      "nokku.v1.RemoveTeamMemberResponse": {
        "type": "object",
        "title": "RemoveTeamMemberResponse",
        "additionalProperties": false
      },
      "nokku.v1.RemoveWorkspaceMemberRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "title": "user_id",
            "format": "uuid"
          }
        },
        "title": "RemoveWorkspaceMemberRequest",
        "additionalProperties": false
      },
      "nokku.v1.RemoveWorkspaceMemberResponse": {
        "type": "object",
        "title": "RemoveWorkspaceMemberResponse",
        "additionalProperties": false
      },
      "nokku.v1.ResendVerificationRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "title": "email",
            "maxLength": 256,
            "format": "email"
          }
        },
        "title": "ResendVerificationRequest",
        "additionalProperties": false
      },
      "nokku.v1.ResendVerificationResponse": {
        "type": "object",
        "title": "ResendVerificationResponse",
        "additionalProperties": false
      },
      "nokku.v1.ResetPasswordRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "title": "token",
            "minLength": 1
          },
          "newPassword": {
            "type": "string",
            "title": "new_password",
            "minLength": 8
          }
        },
        "title": "ResetPasswordRequest",
        "additionalProperties": false
      },
      "nokku.v1.ResetPasswordResponse": {
        "type": "object",
        "title": "ResetPasswordResponse",
        "additionalProperties": false
      },
      "nokku.v1.ResizeRequest": {
        "type": "object",
        "properties": {
          "width": {
            "type": "integer",
            "title": "width"
          },
          "height": {
            "type": "integer",
            "title": "height"
          }
        },
        "title": "ResizeRequest",
        "additionalProperties": false
      },
      "nokku.v1.RevokeAllAccessRequest": {
        "type": "object",
        "properties": {
          "subjectId": {
            "type": "string",
            "title": "subject_id",
            "format": "uuid"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "type": {
            "not": {
              "enum": [
                "PRINCIPAL_TYPE_UNSPECIFIED"
              ]
            },
            "title": "type",
            "$ref": "#/components/schemas/nokku.v1.PrincipalType"
          }
        },
        "title": "RevokeAllAccessRequest",
        "additionalProperties": false
      },
      "nokku.v1.RevokeAllAccessResponse": {
        "type": "object",
        "title": "RevokeAllAccessResponse",
        "additionalProperties": false
      },
      "nokku.v1.RevokeEnrollTokenRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "RevokeEnrollTokenRequest",
        "additionalProperties": false
      },
      "nokku.v1.RevokeEnrollTokenResponse": {
        "type": "object",
        "title": "RevokeEnrollTokenResponse",
        "additionalProperties": false
      },
      "nokku.v1.RevokeInviteTokenRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          }
        },
        "title": "RevokeInviteTokenRequest",
        "additionalProperties": false
      },
      "nokku.v1.RevokeInviteTokenResponse": {
        "type": "object",
        "title": "RevokeInviteTokenResponse",
        "additionalProperties": false
      },
      "nokku.v1.Role": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "name"
          },
          "description": {
            "type": "string",
            "title": "description"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "permissions"
          },
          "assignableToUsers": {
            "type": "boolean",
            "title": "assignable_to_users"
          },
          "assignableToServiceAccounts": {
            "type": "boolean",
            "title": "assignable_to_service_accounts"
          }
        },
        "title": "Role",
        "additionalProperties": false
      },
      "nokku.v1.RolloverCertificateAuthorityRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "keyBits": {
            "type": "integer",
            "title": "key_bits",
            "format": "int32"
          },
          "keyType": {
            "title": "key_type",
            "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
          }
        },
        "title": "RolloverCertificateAuthorityRequest",
        "additionalProperties": false
      },
      "nokku.v1.RolloverCertificateAuthorityResponse": {
        "type": "object",
        "properties": {
          "certificateAuthority": {
            "title": "certificate_authority",
            "$ref": "#/components/schemas/nokku.v1.CertificateAuthority"
          }
        },
        "title": "RolloverCertificateAuthorityResponse",
        "additionalProperties": false
      },
      "nokku.v1.SAMLProvider": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "metadataUrl": {
            "type": "string",
            "title": "metadata_url"
          },
          "emailAttribute": {
            "type": "string",
            "title": "email_attribute"
          },
          "nameAttribute": {
            "type": "string",
            "title": "name_attribute"
          },
          "usernameAttribute": {
            "type": "string",
            "title": "username_attribute"
          },
          "pictureAttribute": {
            "type": "string",
            "title": "picture_attribute"
          },
          "enforceSso": {
            "type": "boolean",
            "title": "enforce_sso"
          },
          "allowJitProvisioning": {
            "type": "boolean",
            "title": "allow_jit_provisioning"
          },
          "isActive": {
            "type": "boolean",
            "title": "is_active"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "SAMLProvider",
        "additionalProperties": false
      },
      "nokku.v1.SSOProvider": {
        "type": "object",
        "properties": {
          "type": {
            "title": "type",
            "$ref": "#/components/schemas/nokku.v1.SSOProvider.Type"
          },
          "id": {
            "type": "string",
            "title": "id"
          },
          "name": {
            "type": "string",
            "title": "name"
          }
        },
        "title": "SSOProvider",
        "additionalProperties": false
      },
      "nokku.v1.SSOProvider.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_OIDC",
          "TYPE_SAML"
        ]
      },
      "nokku.v1.ServiceAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "description": {
            "type": "string",
            "title": "description"
          },
          "roleName": {
            "type": "string",
            "title": "role_name"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "lastUsedAt": {
            "title": "last_used_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "ServiceAccount",
        "additionalProperties": false
      },
      "nokku.v1.Session": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "title": "session_id"
          },
          "username": {
            "type": "string",
            "title": "username"
          },
          "userId": {
            "type": "string",
            "title": "user_id"
          }
        },
        "title": "Session",
        "additionalProperties": false
      },
      "nokku.v1.SessionEnded": {
        "type": "object",
        "properties": {
          "exitCode": {
            "type": "integer",
            "title": "exit_code",
            "format": "int32"
          },
          "errorMessage": {
            "type": "string",
            "title": "error_message"
          }
        },
        "title": "SessionEnded",
        "additionalProperties": false
      },
      "nokku.v1.SessionReady": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "title": "session_id"
          },
          "replayBuffer": {
            "type": "string",
            "title": "replay_buffer",
            "format": "byte"
          },
          "username": {
            "type": "string",
            "title": "username"
          },
          "userId": {
            "type": "string",
            "title": "user_id"
          }
        },
        "title": "SessionReady",
        "additionalProperties": false
      },
      "nokku.v1.SessionRequest": {
        "type": "object",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "exited": {
                "title": "exited",
                "$ref": "#/components/schemas/nokku.v1.SessionEnded"
              }
            },
            "title": "exited",
            "required": [
              "exited"
            ]
          },
          {
            "type": "object",
            "properties": {
              "ready": {
                "title": "ready",
                "$ref": "#/components/schemas/nokku.v1.SessionReady"
              }
            },
            "title": "ready",
            "required": [
              "ready"
            ]
          },
          {
            "type": "object",
            "properties": {
              "stdout": {
                "type": "string",
                "title": "stdout",
                "format": "byte"
              }
            },
            "title": "stdout",
            "required": [
              "stdout"
            ]
          }
        ],
        "title": "SessionRequest",
        "additionalProperties": false
      },
      "nokku.v1.SessionResponse": {
        "type": "object",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "close": {
                "title": "close",
                "$ref": "#/components/schemas/nokku.v1.CloseRequest"
              }
            },
            "title": "close",
            "required": [
              "close"
            ]
          },
          {
            "type": "object",
            "properties": {
              "resize": {
                "title": "resize",
                "$ref": "#/components/schemas/nokku.v1.ResizeRequest"
              }
            },
            "title": "resize",
            "required": [
              "resize"
            ]
          },
          {
            "type": "object",
            "properties": {
              "stdin": {
                "type": "string",
                "title": "stdin",
                "format": "byte"
              }
            },
            "title": "stdin",
            "required": [
              "stdin"
            ]
          }
        ],
        "title": "SessionResponse",
        "additionalProperties": false
      },
      "nokku.v1.SetEmailRecoveryRequest": {
        "type": "object",
        "properties": {
          "enable": {
            "type": "boolean",
            "title": "enable"
          }
        },
        "title": "SetEmailRecoveryRequest",
        "additionalProperties": false
      },
      "nokku.v1.SetEmailRecoveryResponse": {
        "type": "object",
        "title": "SetEmailRecoveryResponse",
        "additionalProperties": false
      },
      "nokku.v1.SetPrincipalsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "targetId": {
            "type": "string",
            "title": "target_id",
            "format": "uuid"
          },
          "usernames": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 32,
              "minLength": 1,
              "pattern": "^[a-z_][a-z0-9-_]*\\$?$"
            },
            "title": "usernames"
          }
        },
        "title": "SetPrincipalsRequest",
        "additionalProperties": false
      },
      "nokku.v1.SetPrincipalsResponse": {
        "type": "object",
        "title": "SetPrincipalsResponse",
        "additionalProperties": false
      },
      "nokku.v1.SignSSHCertificateRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "caId": {
            "type": "string",
            "title": "ca_id",
            "format": "uuid"
          },
          "targetId": {
            "type": "string",
            "title": "target_id",
            "format": "uuid"
          },
          "type": {
            "title": "type",
            "$ref": "#/components/schemas/nokku.v1.SignSSHCertificateRequest.CertificateType"
          },
          "publicKey": {
            "type": "string",
            "title": "public_key",
            "maxLength": 10000,
            "minLength": 1
          },
          "ttl": {
            "title": "ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          }
        },
        "title": "SignSSHCertificateRequest",
        "additionalProperties": false
      },
      "nokku.v1.SignSSHCertificateRequest.CertificateType": {
        "type": "string",
        "title": "CertificateType",
        "enum": [
          "CERTIFICATE_TYPE_UNSPECIFIED",
          "CERTIFICATE_TYPE_USER",
          "CERTIFICATE_TYPE_HOST"
        ]
      },
      "nokku.v1.SignSSHCertificateResponse": {
        "type": "object",
        "properties": {
          "caId": {
            "type": "string",
            "title": "ca_id"
          },
          "caName": {
            "type": "string",
            "title": "ca_name"
          },
          "caPublicKey": {
            "type": "string",
            "title": "ca_public_key"
          },
          "signedCertificate": {
            "type": "string",
            "title": "signed_certificate"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "SignSSHCertificateResponse",
        "additionalProperties": false
      },
      "nokku.v1.SignX509CertificateRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "caId": {
            "type": "string",
            "title": "ca_id",
            "format": "uuid"
          },
          "csr": {
            "type": "string",
            "title": "csr",
            "maxLength": 10000,
            "minLength": 1
          },
          "usage": {
            "title": "usage",
            "$ref": "#/components/schemas/nokku.v1.SignX509CertificateRequest.X509Usage"
          },
          "ttl": {
            "title": "ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          }
        },
        "title": "SignX509CertificateRequest",
        "additionalProperties": false
      },
      "nokku.v1.SignX509CertificateRequest.X509Usage": {
        "type": "string",
        "title": "X509Usage",
        "enum": [
          "X509_USAGE_UNSPECIFIED",
          "X509_USAGE_CLIENT_AUTH",
          "X509_USAGE_SERVER_AUTH",
          "X509_USAGE_CLIENT_AND_SERVER"
        ]
      },
      "nokku.v1.SignX509CertificateResponse": {
        "type": "object",
        "properties": {
          "caId": {
            "type": "string",
            "title": "ca_id"
          },
          "caName": {
            "type": "string",
            "title": "ca_name"
          },
          "certificate": {
            "type": "string",
            "title": "certificate"
          },
          "caChain": {
            "type": "string",
            "title": "ca_chain"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "SignX509CertificateResponse",
        "additionalProperties": false
      },
      "nokku.v1.StreamCLILoginRequest": {
        "type": "object",
        "properties": {
          "loginCode": {
            "type": "string",
            "title": "login_code"
          },
          "authMethod": {
            "type": "string",
            "title": "auth_method",
            "description": "Signing method used by the CLI device after login: \"tpm\" or \"soft\"."
          },
          "authPubkey": {
            "type": "string",
            "title": "auth_pubkey",
            "description": "PEM-encoded PKIX public key the device uses to authenticate requests."
          }
        },
        "title": "StreamCLILoginRequest",
        "additionalProperties": false,
        "description": "CLI login flow -------------------------------------------------------------"
      },
      "nokku.v1.StreamCLILoginResponse": {
        "type": "object",
        "properties": {
          "user": {
            "title": "user",
            "description": "sent after success",
            "$ref": "#/components/schemas/nokku.v1.User"
          },
          "verificationUrl": {
            "type": "string",
            "title": "verification_url",
            "description": "sent first"
          }
        },
        "title": "StreamCLILoginResponse",
        "additionalProperties": false
      },
      "nokku.v1.SubscribeWorkspaceEventsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "eventTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "event_types"
          }
        },
        "title": "SubscribeWorkspaceEventsRequest",
        "additionalProperties": false
      },
      "nokku.v1.SubscribeWorkspaceEventsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "type": {
            "type": "string",
            "title": "type"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "payload": {
            "type": "string",
            "title": "payload_json"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "SubscribeWorkspaceEventsResponse",
        "additionalProperties": false
      },
      "nokku.v1.SyncDaemonRequest": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "users"
          },
          "privateIps": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "private_ips"
          },
          "metadata": {
            "type": "object",
            "title": "metadata",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          }
        },
        "title": "SyncDaemonRequest",
        "additionalProperties": false
      },
      "nokku.v1.SyncDaemonRequest.MetadataEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "MetadataEntry",
        "additionalProperties": false
      },
      "nokku.v1.SyncDaemonResponse": {
        "type": "object",
        "properties": {
          "status": {
            "title": "status",
            "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
          },
          "config": {
            "title": "config",
            "$ref": "#/components/schemas/nokku.v1.DaemonConfig"
          },
          "principals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.PrincipalUsers"
            },
            "title": "principals"
          }
        },
        "title": "SyncDaemonResponse",
        "additionalProperties": false
      },
      "nokku.v1.SyncReport": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "users"
          },
          "privateIps": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "private_ips"
          },
          "metadata": {
            "type": "object",
            "title": "metadata",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          }
        },
        "title": "SyncReport",
        "additionalProperties": false
      },
      "nokku.v1.SyncReport.MetadataEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "MetadataEntry",
        "additionalProperties": false
      },
      "nokku.v1.Target": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "caId": {
            "type": "string",
            "title": "ca_id"
          },
          "daemonId": {
            "type": "string",
            "title": "daemon_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "description": {
            "type": "string",
            "title": "description"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "endpoints"
          },
          "principals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.Principal"
            },
            "title": "principals"
          },
          "metadata": {
            "type": "object",
            "title": "metadata",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "Target",
        "additionalProperties": false
      },
      "nokku.v1.Target.MetadataEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "MetadataEntry",
        "additionalProperties": false
      },
      "nokku.v1.Team": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "description": {
            "type": "string",
            "title": "description"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.WorkspaceMember"
            },
            "title": "members"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "Team",
        "additionalProperties": false
      },
      "nokku.v1.UnlinkAccountRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "title": "provider",
            "minLength": 1
          }
        },
        "title": "UnlinkAccountRequest",
        "additionalProperties": false
      },
      "nokku.v1.UnlinkAccountResponse": {
        "type": "object",
        "title": "UnlinkAccountResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateCertificateAuthorityRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "isActive": {
            "type": "boolean",
            "title": "is_active"
          },
          "isDefault": {
            "type": "boolean",
            "title": "is_default"
          },
          "allowedKeyTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
            },
            "title": "allowed_key_types"
          },
          "lifetime": {
            "title": "lifetime",
            "description": "duration.gte = 730h0m0s\nduration.gte_lt = 730h0m0s\nduration.gte_lt_exclusive = 730h0m0s\nduration.gte_lte = 730h0m0s\nduration.gte_lte_exclusive = 730h0m0s\nduration.lte = 87600h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userDefaultTtl": {
            "title": "user_default_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userMaxTtl": {
            "title": "user_max_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "hostDefaultTtl": {
            "title": "host_default_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "hostMaxTtl": {
            "title": "host_max_ttl",
            "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "userExtensions": {
            "type": "object",
            "title": "user_extensions",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          },
          "userCriticalOptions": {
            "type": "object",
            "title": "user_critical_options",
            "additionalProperties": {
              "type": "string",
              "title": "value"
            }
          }
        },
        "title": "UpdateCertificateAuthorityRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateCertificateAuthorityRequest.UserCriticalOptionsEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "UserCriticalOptionsEntry",
        "additionalProperties": false
      },
      "nokku.v1.UpdateCertificateAuthorityRequest.UserExtensionsEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "key"
          },
          "value": {
            "type": "string",
            "title": "value"
          }
        },
        "title": "UserExtensionsEntry",
        "additionalProperties": false
      },
      "nokku.v1.UpdateCertificateAuthorityResponse": {
        "type": "object",
        "properties": {
          "certificateAuthority": {
            "title": "certificate_authority",
            "$ref": "#/components/schemas/nokku.v1.CertificateAuthority"
          }
        },
        "title": "UpdateCertificateAuthorityResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateDaemonRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "status": {
            "not": {
              "enum": [
                "DAEMON_STATUS_UNSPECIFIED"
              ]
            },
            "title": "status",
            "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
          },
          "config": {
            "title": "config",
            "$ref": "#/components/schemas/nokku.v1.DaemonConfig"
          }
        },
        "title": "UpdateDaemonRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateDaemonResponse": {
        "type": "object",
        "title": "UpdateDaemonResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateOIDCProviderRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1
          },
          "issuerUrl": {
            "type": "string",
            "title": "issuer_url",
            "format": "uri"
          },
          "clientId": {
            "type": "string",
            "title": "client_id",
            "maxLength": 500,
            "minLength": 1
          },
          "clientSecret": {
            "type": "string",
            "title": "client_secret",
            "maxLength": 1000,
            "minLength": 1
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 100,
              "minLength": 1
            },
            "title": "scopes",
            "maxItems": 20,
            "minItems": 1
          },
          "emailClaim": {
            "type": "string",
            "title": "email_claim"
          },
          "nameClaim": {
            "type": "string",
            "title": "name_claim"
          },
          "usernameClaim": {
            "type": "string",
            "title": "username_claim"
          },
          "pictureClaim": {
            "type": "string",
            "title": "picture_claim"
          },
          "enforceSso": {
            "type": "boolean",
            "title": "enforce_sso"
          },
          "allowJitProvisioning": {
            "type": "boolean",
            "title": "allow_jit_provisioning"
          },
          "usePkce": {
            "type": "boolean",
            "title": "use_pkce"
          },
          "isActive": {
            "type": "boolean",
            "title": "is_active"
          }
        },
        "title": "UpdateOIDCProviderRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateOIDCProviderResponse": {
        "type": "object",
        "properties": {
          "oidcProvider": {
            "title": "oidc_provider",
            "$ref": "#/components/schemas/nokku.v1.OIDCProvider"
          }
        },
        "title": "UpdateOIDCProviderResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdatePasskeyRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 100,
            "minLength": 1
          }
        },
        "title": "UpdatePasskeyRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdatePasskeyResponse": {
        "type": "object",
        "properties": {
          "passkey": {
            "title": "passkey",
            "$ref": "#/components/schemas/nokku.v1.Passkey"
          }
        },
        "title": "UpdatePasskeyResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdatePasswordRequest": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "title": "current_password",
            "minLength": 1
          },
          "newPassword": {
            "type": "string",
            "title": "new_password",
            "minLength": 8
          }
        },
        "title": "UpdatePasswordRequest",
        "additionalProperties": false,
        "description": "Password messages ----------------------------------------------------------"
      },
      "nokku.v1.UpdatePasswordResponse": {
        "type": "object",
        "title": "UpdatePasswordResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateProfileRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 3
          },
          "email": {
            "type": "string",
            "title": "email",
            "maxLength": 256,
            "format": "email"
          },
          "username": {
            "type": "string",
            "title": "username",
            "maxLength": 39,
            "minLength": 3,
            "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9-_])*[a-zA-Z0-9]$"
          },
          "picture": {
            "type": "string",
            "title": "picture"
          }
        },
        "title": "UpdateProfileRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateProfileResponse": {
        "type": "object",
        "properties": {
          "user": {
            "title": "user",
            "$ref": "#/components/schemas/nokku.v1.User"
          },
          "emailSent": {
            "type": "boolean",
            "title": "email_sent"
          }
        },
        "title": "UpdateProfileResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateSAMLProviderRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1
          },
          "metadataUrl": {
            "type": "string",
            "title": "metadata_url",
            "format": "uri"
          },
          "emailAttribute": {
            "type": "string",
            "title": "email_attribute"
          },
          "nameAttribute": {
            "type": "string",
            "title": "name_attribute"
          },
          "usernameAttribute": {
            "type": "string",
            "title": "username_attribute"
          },
          "pictureAttribute": {
            "type": "string",
            "title": "picture_attribute"
          },
          "enforceSso": {
            "type": "boolean",
            "title": "enforce_sso"
          },
          "allowJitProvisioning": {
            "type": "boolean",
            "title": "allow_jit_provisioning"
          },
          "isActive": {
            "type": "boolean",
            "title": "is_active"
          }
        },
        "title": "UpdateSAMLProviderRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateSAMLProviderResponse": {
        "type": "object",
        "properties": {
          "samlProvider": {
            "title": "saml_provider",
            "$ref": "#/components/schemas/nokku.v1.SAMLProvider"
          }
        },
        "title": "UpdateSAMLProviderResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateServiceAccountRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "roleName": {
            "type": "string",
            "title": "role_name",
            "pattern": "^(viewer|editor)?$"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "UpdateServiceAccountRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateServiceAccountResponse": {
        "type": "object",
        "properties": {
          "serviceAccount": {
            "title": "service_account",
            "$ref": "#/components/schemas/nokku.v1.ServiceAccount"
          }
        },
        "title": "UpdateServiceAccountResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateTargetRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "caId": {
            "type": "string",
            "title": "ca_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "endpoints"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "UpdateTargetRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateTargetResponse": {
        "type": "object",
        "properties": {
          "target": {
            "title": "target",
            "$ref": "#/components/schemas/nokku.v1.Target"
          }
        },
        "title": "UpdateTargetResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateTeamRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "title": "id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 1
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tags"
          }
        },
        "title": "UpdateTeamRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateTeamResponse": {
        "type": "object",
        "properties": {
          "team": {
            "title": "team",
            "$ref": "#/components/schemas/nokku.v1.Team"
          }
        },
        "title": "UpdateTeamResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateWorkspaceMemberRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "title": "user_id",
            "format": "uuid"
          },
          "roleName": {
            "type": "string",
            "title": "role_name"
          }
        },
        "title": "UpdateWorkspaceMemberRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateWorkspaceMemberResponse": {
        "type": "object",
        "title": "UpdateWorkspaceMemberResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateWorkspaceOwnerRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "newOwner": {
            "type": "string",
            "title": "new_owner",
            "format": "uuid"
          }
        },
        "title": "UpdateWorkspaceOwnerRequest",
        "additionalProperties": false,
        "description": "Various --------------------------------------------------------------------"
      },
      "nokku.v1.UpdateWorkspaceOwnerResponse": {
        "type": "object",
        "title": "UpdateWorkspaceOwnerResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateWorkspaceRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "title": "name",
            "maxLength": 256,
            "minLength": 3
          },
          "description": {
            "type": "string",
            "title": "description",
            "maxLength": 1000
          }
        },
        "title": "UpdateWorkspaceRequest",
        "additionalProperties": false
      },
      "nokku.v1.UpdateWorkspaceResponse": {
        "type": "object",
        "properties": {
          "workspace": {
            "title": "workspace",
            "$ref": "#/components/schemas/nokku.v1.Workspace"
          }
        },
        "title": "UpdateWorkspaceResponse",
        "additionalProperties": false
      },
      "nokku.v1.UpdateWorkspaceSettingsRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "enrollAutoApprove": {
            "type": "boolean",
            "title": "enroll_auto_approve"
          },
          "enrollExpiry": {
            "title": "enroll_expiry",
            "description": "duration.gte = 5m0s\nduration.gte_lt = 5m0s\nduration.gte_lt_exclusive = 5m0s\nduration.gte_lte = 5m0s\nduration.gte_lte_exclusive = 5m0s\nduration.lte = 720h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          },
          "inviteExpiry": {
            "title": "invite_expiry",
            "description": "duration.gte = 5m0s\nduration.gte_lt = 5m0s\nduration.gte_lt_exclusive = 5m0s\nduration.gte_lte = 5m0s\nduration.gte_lte_exclusive = 5m0s\nduration.lte = 720h0m0s\n",
            "$ref": "#/components/schemas/google.protobuf.Duration"
          }
        },
        "title": "UpdateWorkspaceSettingsRequest",
        "additionalProperties": false,
        "description": "Settings -------------------------------------------------------------------"
      },
      "nokku.v1.UpdateWorkspaceSettingsResponse": {
        "type": "object",
        "properties": {
          "settings": {
            "title": "settings",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceSettings"
          }
        },
        "title": "UpdateWorkspaceSettingsResponse",
        "additionalProperties": false
      },
      "nokku.v1.User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "username": {
            "type": "string",
            "title": "username"
          },
          "email": {
            "type": "string",
            "title": "email"
          },
          "emailVerified": {
            "type": "boolean",
            "title": "email_verified"
          },
          "picture": {
            "type": "string",
            "title": "picture"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "enableEmailRecovery": {
            "type": "boolean",
            "title": "enable_email_recovery"
          }
        },
        "title": "User",
        "additionalProperties": false
      },
      "nokku.v1.UserDevice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "kind": {
            "type": "string",
            "title": "kind",
            "description": "'cli' | 'web'"
          },
          "expiresAt": {
            "title": "expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "lastUsedAt": {
            "title": "last_used_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "UserDevice",
        "additionalProperties": false
      },
      "nokku.v1.VerifyCLILoginRequest": {
        "type": "object",
        "properties": {
          "loginCode": {
            "type": "string",
            "title": "login_code",
            "minLength": 1
          }
        },
        "title": "VerifyCLILoginRequest",
        "additionalProperties": false
      },
      "nokku.v1.VerifyCLILoginResponse": {
        "type": "object",
        "title": "VerifyCLILoginResponse",
        "additionalProperties": false
      },
      "nokku.v1.VerifyEmailRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "title": "token"
          }
        },
        "title": "VerifyEmailRequest",
        "additionalProperties": false
      },
      "nokku.v1.VerifyEmailResponse": {
        "type": "object",
        "title": "VerifyEmailResponse",
        "additionalProperties": false
      },
      "nokku.v1.VerifyWorkspaceDomainRequest": {
        "type": "object",
        "properties": {
          "workspaceId": {
            "type": "string",
            "title": "workspace_id",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "title": "domain",
            "format": "hostname"
          }
        },
        "title": "VerifyWorkspaceDomainRequest",
        "additionalProperties": false
      },
      "nokku.v1.VerifyWorkspaceDomainResponse": {
        "type": "object",
        "properties": {
          "domain": {
            "title": "domain",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceDomain"
          }
        },
        "title": "VerifyWorkspaceDomainResponse",
        "additionalProperties": false
      },
      "nokku.v1.WhoamiRequest": {
        "type": "object",
        "title": "WhoamiRequest",
        "additionalProperties": false
      },
      "nokku.v1.WhoamiResponse": {
        "type": "object",
        "properties": {
          "user": {
            "title": "user",
            "$ref": "#/components/schemas/nokku.v1.User"
          }
        },
        "title": "WhoamiResponse",
        "additionalProperties": false
      },
      "nokku.v1.Workspace": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "description": {
            "type": "string",
            "title": "description"
          },
          "createdBy": {
            "type": "string",
            "title": "created_by"
          },
          "settings": {
            "title": "settings",
            "$ref": "#/components/schemas/nokku.v1.WorkspaceSettings"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "Workspace",
        "additionalProperties": false
      },
      "nokku.v1.WorkspaceCounts": {
        "type": "object",
        "properties": {
          "members": {
            "type": [
              "integer",
              "string"
            ],
            "title": "members",
            "format": "int64"
          },
          "teams": {
            "type": [
              "integer",
              "string"
            ],
            "title": "teams",
            "format": "int64"
          },
          "serviceAccounts": {
            "type": [
              "integer",
              "string"
            ],
            "title": "service_accounts",
            "format": "int64"
          },
          "targets": {
            "type": [
              "integer",
              "string"
            ],
            "title": "targets",
            "format": "int64"
          },
          "cas": {
            "type": [
              "integer",
              "string"
            ],
            "title": "cas",
            "format": "int64"
          }
        },
        "title": "WorkspaceCounts",
        "additionalProperties": false
      },
      "nokku.v1.WorkspaceDomain": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "title": "domain"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "verificationToken": {
            "type": "string",
            "title": "verification_token"
          },
          "verifiedAt": {
            "title": "verified_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "WorkspaceDomain",
        "additionalProperties": false
      },
      "nokku.v1.WorkspaceMember": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "id",
            "description": "User ID"
          },
          "workspaceId": {
            "type": "string",
            "title": "workspace_id"
          },
          "name": {
            "type": "string",
            "title": "name"
          },
          "username": {
            "type": "string",
            "title": "username"
          },
          "email": {
            "type": "string",
            "title": "email"
          },
          "emailVerified": {
            "type": "boolean",
            "title": "email_verified"
          },
          "picture": {
            "type": "string",
            "title": "picture"
          },
          "roleName": {
            "type": "string",
            "title": "role_name"
          },
          "roleDescription": {
            "type": "string",
            "title": "role_description"
          },
          "createdAt": {
            "title": "created_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "updatedAt": {
            "title": "updated_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "WorkspaceMember",
        "additionalProperties": false
      },
      "nokku.v1.WorkspaceSettings": {
        "type": "object",
        "properties": {
          "enrollAutoApprove": {
            "type": "boolean",
            "title": "enroll_auto_approve"
          },
          "enrollExpiresAt": {
            "title": "enroll_expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "inviteExpiresAt": {
            "title": "invite_expires_at",
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        },
        "title": "WorkspaceSettings",
        "additionalProperties": false
      }
    },
    "responses": {
      "Forbidden": {
        "description": "Authenticated user lacks permission to access this resource",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "code": 7,
              "message": "Permission denied"
            }
          }
        }
      },
      "NotFound": {
        "description": "The requested resource was not found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "code": 5,
              "message": "Resource not found"
            }
          }
        }
      },
      "RateLimitExceeded": {
        "description": "Rate limit exceeded - too many requests",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "code": 8,
              "message": "Rate limit exceeded"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "Maximum requests per window"
          },
          "X-RateLimit-Remaining": {
            "schema": {
              "type": "integer"
            },
            "description": "Remaining requests in current window"
          },
          "X-RateLimit-Reset": {
            "schema": {
              "type": "integer"
            },
            "description": "Unix timestamp when limit resets"
          }
        }
      },
      "Unauthorized": {
        "description": "Authentication credentials are missing or invalid",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "code": 16,
              "message": "Authentication required"
            }
          }
        }
      }
    },
    "parameters": {
      "Timeout": {
        "name": "Connect-Timeout-Ms",
        "in": "header",
        "description": "Request timeout in milliseconds",
        "required": false,
        "schema": {
          "type": "integer",
          "format": "int64",
          "example": 30000
        }
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    },
    {
      "CookieAuth": []
    }
  ],
  "paths": {
    "/nokku.v1.AuthService/StreamCLILogin": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "StreamCLILogin",
        "operationId": "nokku.v1.AuthService.StreamCLILogin",
        "parameters": [
          {
            "name": "Connect-Protocol-Version",
            "in": "header",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "name": "Connect-Timeout-Ms",
            "in": "header",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/connect+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/connect+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/grpc": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/grpc+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/grpc+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/grpc-web": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/grpc-web+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            },
            "application/grpc-web+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.StreamCLILoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "Error",
            "content": {
              "application/connect+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/connect+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/connect+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/connect+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/grpc": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/grpc+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/grpc+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/grpc-web": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/grpc-web+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              },
              "application/grpc-web+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.StreamCLILoginResponse"
                }
              }
            }
          }
        }
      }
    },
    "/nokku.v1.AuthService/VerifyCLILogin": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "VerifyCLILogin",
        "operationId": "nokku.v1.AuthService.VerifyCLILogin",
        "parameters": [
          {
            "name": "Connect-Protocol-Version",
            "in": "header",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "name": "Connect-Timeout-Ms",
            "in": "header",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.VerifyCLILoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.VerifyCLILoginResponse"
                }
              }
            }
          }
        }
      }
    },
    "/nokku.v1.DaemonControlService/Connect": {
      "post": {
        "tags": [
          "nokku.v1.DaemonControlService"
        ],
        "summary": "Connect",
        "operationId": "nokku.v1.DaemonControlService.Connect",
        "parameters": [
          {
            "name": "Connect-Protocol-Version",
            "in": "header",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "name": "Connect-Timeout-Ms",
            "in": "header",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/connect+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/connect+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/grpc": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/grpc+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/grpc+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/grpc-web": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/grpc-web+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            },
            "application/grpc-web+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ConnectRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "Error",
            "content": {
              "application/connect+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/connect+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/connect+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/connect+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/grpc": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/grpc+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/grpc+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/grpc-web": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/grpc-web+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              },
              "application/grpc-web+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ConnectResponse"
                }
              }
            }
          }
        }
      }
    },
    "/nokku.v1.DaemonService/EnrollDaemon": {
      "post": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "EnrollDaemon",
        "operationId": "nokku.v1.DaemonService.EnrollDaemon",
        "parameters": [
          {
            "name": "Connect-Protocol-Version",
            "in": "header",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "name": "Connect-Timeout-Ms",
            "in": "header",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.EnrollDaemonRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.EnrollDaemonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/nokku.v1.DaemonService/SyncDaemon": {
      "post": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "SyncDaemon",
        "operationId": "nokku.v1.DaemonService.SyncDaemon",
        "parameters": [
          {
            "name": "Connect-Protocol-Version",
            "in": "header",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "name": "Connect-Timeout-Ms",
            "in": "header",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SyncDaemonRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SyncDaemonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/nokku.v1.DaemonSessionService/Session": {
      "post": {
        "tags": [
          "nokku.v1.DaemonSessionService"
        ],
        "summary": "Session",
        "operationId": "nokku.v1.DaemonSessionService.Session",
        "parameters": [
          {
            "name": "Connect-Protocol-Version",
            "in": "header",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/connect-protocol-version"
            }
          },
          {
            "name": "Connect-Timeout-Ms",
            "in": "header",
            "schema": {
              "$ref": "#/components/schemas/connect-timeout-header"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/connect+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/connect+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/grpc": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/grpc+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/grpc+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/grpc-web": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/grpc-web+proto": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            },
            "application/grpc-web+json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "Error",
            "content": {
              "application/connect+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/connect+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web+proto": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              },
              "application/grpc-web+json": {
                "schema": {
                  "$ref": "#/components/schemas/connect.error"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/connect+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/connect+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/grpc": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/grpc+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/grpc+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/grpc-web": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/grpc-web+proto": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              },
              "application/grpc-web+json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SessionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/account": {
      "delete": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "DeleteAccount",
        "operationId": "nokku.v1.UserService.DeleteAccount",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteAccountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/account/email-recovery": {
      "patch": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "SetEmailRecovery",
        "operationId": "nokku.v1.UserService.SetEmailRecovery",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.SetEmailRecoveryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SetEmailRecoveryResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounts/oauth": {
      "get": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "ListLinkedAccounts",
        "operationId": "nokku.v1.UserService.ListLinkedAccounts",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListLinkedAccountsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounts/oauth/{provider}": {
      "delete": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "UnlinkAccount",
        "operationId": "nokku.v1.UserService.UnlinkAccount",
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "provider",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UnlinkAccountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/audit": {
      "get": {
        "tags": [
          "nokku.v1.UtilService"
        ],
        "summary": "ListAuditLogs",
        "operationId": "nokku.v1.UtilService.ListAuditLogs",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "Filters (optional)",
            "schema": {
              "type": "string",
              "title": "search"
            }
          },
          {
            "name": "actorIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              },
              "title": "actor_ids"
            }
          },
          {
            "name": "actorTypes",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "actor_types"
            }
          },
          {
            "name": "actions",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "actions"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(\u0026tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(\u0026ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n     Timestamp timestamp;\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n     long millis = System.currentTimeMillis();\n\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n     Instant now = Instant.now();\n\n     Timestamp timestamp =\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n             .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n     timestamp = Timestamp()\n     timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format.",
            "schema": {
              "type": "string",
              "examples": [
                "2023-01-15T01:30:15.01Z",
                "2024-12-25T12:00:00Z"
              ],
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(\u0026tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(\u0026ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n     Timestamp timestamp;\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n     long millis = System.currentTimeMillis();\n\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n     Instant now = Instant.now();\n\n     Timestamp timestamp =\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n             .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n     timestamp = Timestamp()\n     timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format.",
            "schema": {
              "type": "string",
              "examples": [
                "2023-01-15T01:30:15.01Z",
                "2024-12-25T12:00:00Z"
              ],
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListAuditLogsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/audit:export": {
      "post": {
        "tags": [
          "nokku.v1.UtilService"
        ],
        "summary": "ExportAuditLogs",
        "operationId": "nokku.v1.UtilService.ExportAuditLogs",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ExportAuditLogsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ExportAuditLogsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/checkout": {
      "post": {
        "tags": [
          "nokku.v1.BillingService"
        ],
        "summary": "CreateCheckout",
        "operationId": "nokku.v1.BillingService.CreateCheckout",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateCheckoutResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/portal": {
      "post": {
        "tags": [
          "nokku.v1.BillingService"
        ],
        "summary": "CreatePortal",
        "operationId": "nokku.v1.BillingService.CreatePortal",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreatePortalResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/subscription": {
      "get": {
        "tags": [
          "nokku.v1.BillingService"
        ],
        "summary": "GetBilling",
        "operationId": "nokku.v1.BillingService.GetBilling",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetBillingResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/subscription/cancel": {
      "post": {
        "tags": [
          "nokku.v1.BillingService"
        ],
        "summary": "CancelSubscription",
        "operationId": "nokku.v1.BillingService.CancelSubscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.CancelSubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CancelSubscriptionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/credentials/backup-codes": {
      "get": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "ListBackupCodes",
        "operationId": "nokku.v1.CredentialService.ListBackupCodes",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListBackupCodesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "CreateBackupCodes",
        "description": "Backup codes",
        "operationId": "nokku.v1.CredentialService.CreateBackupCodes",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateBackupCodesResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "DeleteBackupCodes",
        "operationId": "nokku.v1.CredentialService.DeleteBackupCodes",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteBackupCodesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/credentials/passkeys": {
      "get": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "ListPasskeys",
        "description": "Passkeys",
        "operationId": "nokku.v1.CredentialService.ListPasskeys",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListPasskeysResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/credentials/passkeys/{id}": {
      "delete": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "DeletePasskey",
        "operationId": "nokku.v1.CredentialService.DeletePasskey",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeletePasskeyResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "UpdatePasskey",
        "operationId": "nokku.v1.CredentialService.UpdatePasskey",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "minLength": 1
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 100,
                    "minLength": 1
                  }
                },
                "title": "UpdatePasskeyRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdatePasskeyResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/credentials/password": {
      "delete": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "DeletePassword",
        "operationId": "nokku.v1.CredentialService.DeletePassword",
        "parameters": [
          {
            "name": "currentPassword",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "current_password",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeletePasswordResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.CredentialService"
        ],
        "summary": "UpdatePassword",
        "description": "Passwords",
        "operationId": "nokku.v1.CredentialService.UpdatePassword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.UpdatePasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdatePasswordResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices": {
      "get": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "ListUserDevices",
        "operationId": "nokku.v1.UserService.ListUserDevices",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListUserDevicesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/devices/{id}": {
      "delete": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "DeleteUserDevice",
        "operationId": "nokku.v1.UserService.DeleteUserDevice",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteUserDeviceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/forgot-password": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "ForgotPassword",
        "operationId": "nokku.v1.AuthService.ForgotPassword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ForgotPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ForgotPasswordResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/invites/{token}": {
      "get": {
        "tags": [
          "nokku.v1.InvitationService"
        ],
        "summary": "GetInvitation",
        "operationId": "nokku.v1.InvitationService.GetInvitation",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "token",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetInvitationResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.InvitationService"
        ],
        "summary": "AcceptInvitation",
        "operationId": "nokku.v1.InvitationService.AcceptInvitation",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "token",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.AcceptInvitationResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/license": {
      "get": {
        "tags": [
          "nokku.v1.LicenseService"
        ],
        "summary": "GetLicense",
        "operationId": "nokku.v1.LicenseService.GetLicense",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetLicenseResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/login": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "Login",
        "operationId": "nokku.v1.AuthService.Login",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.LoginResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/login/backup-code": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "LoginWithBackupCode",
        "operationId": "nokku.v1.AuthService.LoginWithBackupCode",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.LoginWithBackupCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.LoginWithBackupCodeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/logout": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "Logout",
        "operationId": "nokku.v1.AuthService.Logout",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.LogoutResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/profile": {
      "patch": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "UpdateProfile",
        "operationId": "nokku.v1.UserService.UpdateProfile",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.UpdateProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateProfileResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/refresh-token": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "RefreshToken",
        "operationId": "nokku.v1.AuthService.RefreshToken",
        "parameters": [
          {
            "name": "refreshToken",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "refresh_token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RefreshTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/register": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "Register",
        "operationId": "nokku.v1.AuthService.Register",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RegisterResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resend-verification": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "ResendVerification",
        "operationId": "nokku.v1.AuthService.ResendVerification",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "email",
              "maxLength": 256,
              "format": "email"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ResendVerificationResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/reset-password": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "ResetPassword",
        "operationId": "nokku.v1.AuthService.ResetPassword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.ResetPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ResetPasswordResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/roles": {
      "get": {
        "tags": [
          "nokku.v1.UtilService"
        ],
        "summary": "ListRoles",
        "operationId": "nokku.v1.UtilService.ListRoles",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListRolesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sso/{email}": {
      "get": {
        "tags": [
          "nokku.v1.SSOService"
        ],
        "summary": "CheckSSO",
        "description": "Public endpoint",
        "operationId": "nokku.v1.SSOService.CheckSSO",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "email",
              "maxLength": 256,
              "format": "email"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CheckSSOResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/verify-email": {
      "post": {
        "tags": [
          "nokku.v1.AuthService"
        ],
        "summary": "VerifyEmail",
        "operationId": "nokku.v1.AuthService.VerifyEmail",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.VerifyEmailResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/version": {
      "get": {
        "tags": [
          "nokku.v1.UtilService"
        ],
        "summary": "GetVersion",
        "operationId": "nokku.v1.UtilService.GetVersion",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetVersionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/whoami": {
      "get": {
        "tags": [
          "nokku.v1.UserService"
        ],
        "summary": "Whoami",
        "operationId": "nokku.v1.UserService.Whoami",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.WhoamiResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "ListWorkspaces",
        "operationId": "nokku.v1.WorkspaceService.ListWorkspaces",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListWorkspacesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "CreateWorkspace",
        "operationId": "nokku.v1.WorkspaceService.CreateWorkspace",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nokku.v1.CreateWorkspaceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateWorkspaceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "GetWorkspace",
        "operationId": "nokku.v1.WorkspaceService.GetWorkspace",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetWorkspaceResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "DeleteWorkspace",
        "operationId": "nokku.v1.WorkspaceService.DeleteWorkspace",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteWorkspaceResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "UpdateWorkspace",
        "operationId": "nokku.v1.WorkspaceService.UpdateWorkspace",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 3
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  }
                },
                "title": "UpdateWorkspaceRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateWorkspaceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/certificate_authorities": {
      "get": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "ListCertificateAuthorities",
        "operationId": "nokku.v1.CertificateService.ListCertificateAuthorities",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListCertificateAuthoritiesResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "CreateCertificateAuthority",
        "operationId": "nokku.v1.CertificateService.CreateCertificateAuthority",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "keyType": {
                    "not": {
                      "enum": [
                        "CERTIFICATE_KEY_TYPE_UNSPECIFIED"
                      ]
                    },
                    "title": "key_type",
                    "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
                  },
                  "keyBits": {
                    "type": "integer",
                    "title": "key_bits",
                    "format": "int32"
                  },
                  "isDefault": {
                    "type": "boolean",
                    "title": "is_default"
                  },
                  "allowedKeyTypes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
                    },
                    "title": "allowed_key_types"
                  },
                  "lifetime": {
                    "title": "lifetime",
                    "description": "duration.gte = 730h0m0s\nduration.gte_lt = 730h0m0s\nduration.gte_lt_exclusive = 730h0m0s\nduration.gte_lte = 730h0m0s\nduration.gte_lte_exclusive = 730h0m0s\nduration.lte = 87600h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "userDefaultTtl": {
                    "title": "user_default_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "userMaxTtl": {
                    "title": "user_max_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "hostDefaultTtl": {
                    "title": "host_default_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "hostMaxTtl": {
                    "title": "host_max_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "userExtensions": {
                    "type": "object",
                    "title": "user_extensions",
                    "additionalProperties": {
                      "type": "string",
                      "title": "value"
                    }
                  },
                  "userCriticalOptions": {
                    "type": "object",
                    "title": "user_critical_options",
                    "additionalProperties": {
                      "type": "string",
                      "title": "value"
                    }
                  },
                  "authorityType": {
                    "title": "authority_type",
                    "$ref": "#/components/schemas/nokku.v1.AuthorityType"
                  }
                },
                "title": "CreateCertificateAuthorityRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateCertificateAuthorityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/certificate_authorities/{id}": {
      "get": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "GetCertificateAuthority",
        "operationId": "nokku.v1.CertificateService.GetCertificateAuthority",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetCertificateAuthorityResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "DeleteCertificateAuthority",
        "operationId": "nokku.v1.CertificateService.DeleteCertificateAuthority",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteCertificateAuthorityResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "UpdateCertificateAuthority",
        "operationId": "nokku.v1.CertificateService.UpdateCertificateAuthority",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "isActive": {
                    "type": "boolean",
                    "title": "is_active"
                  },
                  "isDefault": {
                    "type": "boolean",
                    "title": "is_default"
                  },
                  "allowedKeyTypes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
                    },
                    "title": "allowed_key_types"
                  },
                  "lifetime": {
                    "title": "lifetime",
                    "description": "duration.gte = 730h0m0s\nduration.gte_lt = 730h0m0s\nduration.gte_lt_exclusive = 730h0m0s\nduration.gte_lte = 730h0m0s\nduration.gte_lte_exclusive = 730h0m0s\nduration.lte = 87600h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "userDefaultTtl": {
                    "title": "user_default_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "userMaxTtl": {
                    "title": "user_max_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "hostDefaultTtl": {
                    "title": "host_default_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "hostMaxTtl": {
                    "title": "host_max_ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "userExtensions": {
                    "type": "object",
                    "title": "user_extensions",
                    "additionalProperties": {
                      "type": "string",
                      "title": "value"
                    }
                  },
                  "userCriticalOptions": {
                    "type": "object",
                    "title": "user_critical_options",
                    "additionalProperties": {
                      "type": "string",
                      "title": "value"
                    }
                  }
                },
                "title": "UpdateCertificateAuthorityRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateCertificateAuthorityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/certificate_authorities/{id}:rollover": {
      "post": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "RolloverCertificateAuthority",
        "operationId": "nokku.v1.CertificateService.RolloverCertificateAuthority",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "keyBits": {
                    "type": "integer",
                    "title": "key_bits",
                    "format": "int32"
                  },
                  "keyType": {
                    "title": "key_type",
                    "$ref": "#/components/schemas/nokku.v1.CertificateKeyType"
                  }
                },
                "title": "RolloverCertificateAuthorityRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RolloverCertificateAuthorityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/daemons": {
      "get": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "ListDaemons",
        "operationId": "nokku.v1.DaemonService.ListDaemons",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "query"
            }
          },
          {
            "name": "online",
            "in": "query",
            "schema": {
              "type": "boolean",
              "title": "online"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "title": "status",
              "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListDaemonsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/daemons/{daemon_id}/sessions": {
      "get": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "ListSessions",
        "operationId": "nokku.v1.DaemonService.ListSessions",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "daemon_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "daemon_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListSessionsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "CreateSession",
        "operationId": "nokku.v1.DaemonService.CreateSession",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "daemon_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "daemon_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string",
                    "title": "username",
                    "maxLength": 32,
                    "minLength": 1,
                    "pattern": "^[a-z_][a-z0-9-_]*\\$?$"
                  }
                },
                "title": "CreateSessionRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateSessionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/daemons/{daemon_id}/sessions/{session_id}": {
      "delete": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "CloseSession",
        "operationId": "nokku.v1.DaemonService.CloseSession",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "daemon_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "daemon_id",
              "format": "uuid"
            }
          },
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "session_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CloseSessionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/daemons/{id}": {
      "get": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "GetDaemon",
        "operationId": "nokku.v1.DaemonService.GetDaemon",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetDaemonResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "DeleteDaemon",
        "operationId": "nokku.v1.DaemonService.DeleteDaemon",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteDaemonResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "UpdateDaemon",
        "operationId": "nokku.v1.DaemonService.UpdateDaemon",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "not": {
                      "enum": [
                        "DAEMON_STATUS_UNSPECIFIED"
                      ]
                    },
                    "title": "status",
                    "$ref": "#/components/schemas/nokku.v1.DaemonStatus"
                  },
                  "config": {
                    "title": "config",
                    "$ref": "#/components/schemas/nokku.v1.DaemonConfig"
                  }
                },
                "title": "UpdateDaemonRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateDaemonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/domains": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceDomainService"
        ],
        "summary": "ListWorkspaceDomains",
        "operationId": "nokku.v1.WorkspaceDomainService.ListWorkspaceDomains",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListWorkspaceDomainsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.WorkspaceDomainService"
        ],
        "summary": "CreateWorkspaceDomain",
        "operationId": "nokku.v1.WorkspaceDomainService.CreateWorkspaceDomain",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "domain": {
                    "type": "string",
                    "title": "domain",
                    "maxLength": 253,
                    "minLength": 4,
                    "pattern": "^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$",
                    "format": "hostname"
                  }
                },
                "title": "CreateWorkspaceDomainRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateWorkspaceDomainResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/domains/{domain}": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceDomainService"
        ],
        "summary": "GetWorkspaceDomain",
        "operationId": "nokku.v1.WorkspaceDomainService.GetWorkspaceDomain",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "domain",
              "format": "hostname"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetWorkspaceDomainResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.WorkspaceDomainService"
        ],
        "summary": "DeleteWorkspaceDomain",
        "operationId": "nokku.v1.WorkspaceDomainService.DeleteWorkspaceDomain",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "domain",
              "format": "hostname"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteWorkspaceDomainResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/domains/{domain}:generate": {
      "post": {
        "tags": [
          "nokku.v1.WorkspaceDomainService"
        ],
        "summary": "RegenerateWorkspaceDomainToken",
        "operationId": "nokku.v1.WorkspaceDomainService.RegenerateWorkspaceDomainToken",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "domain",
              "format": "hostname"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RegenerateWorkspaceDomainTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/domains/{domain}:verify": {
      "post": {
        "tags": [
          "nokku.v1.WorkspaceDomainService"
        ],
        "summary": "VerifyWorkspaceDomain",
        "operationId": "nokku.v1.WorkspaceDomainService.VerifyWorkspaceDomain",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "domain",
              "format": "hostname"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.VerifyWorkspaceDomainResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/enroll:refresh": {
      "post": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "RefreshEnrollToken",
        "operationId": "nokku.v1.DaemonService.RefreshEnrollToken",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RefreshEnrollTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/enroll:revoke": {
      "delete": {
        "tags": [
          "nokku.v1.DaemonService"
        ],
        "summary": "RevokeEnrollToken",
        "operationId": "nokku.v1.DaemonService.RevokeEnrollToken",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RevokeEnrollTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/events:subscribe": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "SubscribeWorkspaceEvents",
        "operationId": "nokku.v1.WorkspaceService.SubscribeWorkspaceEvents",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "eventTypes",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "event_types"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SubscribeWorkspaceEventsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/invites:refresh": {
      "post": {
        "tags": [
          "nokku.v1.InvitationService"
        ],
        "summary": "RefreshInviteToken",
        "operationId": "nokku.v1.InvitationService.RefreshInviteToken",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RefreshInviteTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/invites:revoke": {
      "delete": {
        "tags": [
          "nokku.v1.InvitationService"
        ],
        "summary": "RevokeInviteToken",
        "operationId": "nokku.v1.InvitationService.RevokeInviteToken",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RevokeInviteTokenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/members": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "ListWorkspaceMembers",
        "operationId": "nokku.v1.WorkspaceService.ListWorkspaceMembers",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "query"
            }
          },
          {
            "name": "roleName",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "role_name"
            }
          },
          {
            "name": "teamIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              },
              "title": "team_ids"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListWorkspaceMembersResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/members/{user_id}": {
      "get": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "GetWorkspaceMember",
        "operationId": "nokku.v1.WorkspaceService.GetWorkspaceMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "user_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetWorkspaceMemberResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "UpdateWorkspaceMember",
        "operationId": "nokku.v1.WorkspaceService.UpdateWorkspaceMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "user_id",
              "format": "uuid"
            }
          },
          {
            "name": "roleName",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "role_name"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateWorkspaceMemberResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "RemoveWorkspaceMember",
        "operationId": "nokku.v1.WorkspaceService.RemoveWorkspaceMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "user_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RemoveWorkspaceMemberResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/oidc": {
      "get": {
        "tags": [
          "nokku.v1.SSOService"
        ],
        "summary": "GetOIDCProvider",
        "operationId": "nokku.v1.SSOService.GetOIDCProvider",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetOIDCProviderResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.SSOService"
        ],
        "summary": "UpdateOIDCProvider",
        "operationId": "nokku.v1.SSOService.UpdateOIDCProvider",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1
                  },
                  "issuerUrl": {
                    "type": "string",
                    "title": "issuer_url",
                    "format": "uri"
                  },
                  "clientId": {
                    "type": "string",
                    "title": "client_id",
                    "maxLength": 500,
                    "minLength": 1
                  },
                  "clientSecret": {
                    "type": "string",
                    "title": "client_secret",
                    "maxLength": 1000,
                    "minLength": 1
                  },
                  "scopes": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 100,
                      "minLength": 1
                    },
                    "title": "scopes",
                    "maxItems": 20,
                    "minItems": 1
                  },
                  "emailClaim": {
                    "type": "string",
                    "title": "email_claim"
                  },
                  "nameClaim": {
                    "type": "string",
                    "title": "name_claim"
                  },
                  "usernameClaim": {
                    "type": "string",
                    "title": "username_claim"
                  },
                  "pictureClaim": {
                    "type": "string",
                    "title": "picture_claim"
                  },
                  "enforceSso": {
                    "type": "boolean",
                    "title": "enforce_sso"
                  },
                  "allowJitProvisioning": {
                    "type": "boolean",
                    "title": "allow_jit_provisioning"
                  },
                  "usePkce": {
                    "type": "boolean",
                    "title": "use_pkce"
                  },
                  "isActive": {
                    "type": "boolean",
                    "title": "is_active"
                  }
                },
                "title": "UpdateOIDCProviderRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateOIDCProviderResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/owner/{new_owner}": {
      "post": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "UpdateWorkspaceOwner",
        "operationId": "nokku.v1.WorkspaceService.UpdateWorkspaceOwner",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "new_owner",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "new_owner",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateWorkspaceOwnerResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/principals": {
      "get": {
        "tags": [
          "nokku.v1.PrincipalService"
        ],
        "summary": "ListPrincipals",
        "operationId": "nokku.v1.PrincipalService.ListPrincipals",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "targetId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "target_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "query"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "not": {
                "enum": [
                  "PRINCIPAL_TYPE_UNSPECIFIED"
                ]
              },
              "title": "type",
              "$ref": "#/components/schemas/nokku.v1.PrincipalType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListPrincipalsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.PrincipalService"
        ],
        "summary": "SetPrincipals",
        "operationId": "nokku.v1.PrincipalService.SetPrincipals",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "targetId": {
                    "type": "string",
                    "title": "target_id",
                    "format": "uuid"
                  },
                  "usernames": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 32,
                      "minLength": 1,
                      "pattern": "^[a-z_][a-z0-9-_]*\\$?$"
                    },
                    "title": "usernames"
                  }
                },
                "title": "SetPrincipalsRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SetPrincipalsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/principals:add": {
      "post": {
        "tags": [
          "nokku.v1.PrincipalService"
        ],
        "summary": "AddSubjectsToPrincipal",
        "operationId": "nokku.v1.PrincipalService.AddSubjectsToPrincipal",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "title": "id",
                    "format": "uuid"
                  },
                  "subjectIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "title": "subject_ids",
                    "maxItems": 50,
                    "minItems": 1
                  },
                  "type": {
                    "not": {
                      "enum": [
                        "PRINCIPAL_TYPE_UNSPECIFIED"
                      ]
                    },
                    "title": "type",
                    "$ref": "#/components/schemas/nokku.v1.PrincipalType"
                  }
                },
                "title": "AddSubjectsToPrincipalRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.AddSubjectsToPrincipalResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/principals:remove": {
      "post": {
        "tags": [
          "nokku.v1.PrincipalService"
        ],
        "summary": "RemoveSubjectsFromPrincipal",
        "operationId": "nokku.v1.PrincipalService.RemoveSubjectsFromPrincipal",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "title": "id",
                    "format": "uuid"
                  },
                  "subjectIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "title": "subject_ids",
                    "maxItems": 50,
                    "minItems": 1
                  },
                  "type": {
                    "not": {
                      "enum": [
                        "PRINCIPAL_TYPE_UNSPECIFIED"
                      ]
                    },
                    "title": "type",
                    "$ref": "#/components/schemas/nokku.v1.PrincipalType"
                  }
                },
                "title": "RemoveSubjectsFromPrincipalRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RemoveSubjectsFromPrincipalResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/principals:revoke": {
      "post": {
        "tags": [
          "nokku.v1.PrincipalService"
        ],
        "summary": "RevokeAllAccess",
        "operationId": "nokku.v1.PrincipalService.RevokeAllAccess",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "subjectId": {
                    "type": "string",
                    "title": "subject_id",
                    "format": "uuid"
                  },
                  "type": {
                    "not": {
                      "enum": [
                        "PRINCIPAL_TYPE_UNSPECIFIED"
                      ]
                    },
                    "title": "type",
                    "$ref": "#/components/schemas/nokku.v1.PrincipalType"
                  }
                },
                "title": "RevokeAllAccessRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RevokeAllAccessResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/saml": {
      "get": {
        "tags": [
          "nokku.v1.SSOService"
        ],
        "summary": "GetSAMLProvider",
        "operationId": "nokku.v1.SSOService.GetSAMLProvider",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetSAMLProviderResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.SSOService"
        ],
        "summary": "UpdateSAMLProvider",
        "operationId": "nokku.v1.SSOService.UpdateSAMLProvider",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1
                  },
                  "metadataUrl": {
                    "type": "string",
                    "title": "metadata_url",
                    "format": "uri"
                  },
                  "emailAttribute": {
                    "type": "string",
                    "title": "email_attribute"
                  },
                  "nameAttribute": {
                    "type": "string",
                    "title": "name_attribute"
                  },
                  "usernameAttribute": {
                    "type": "string",
                    "title": "username_attribute"
                  },
                  "pictureAttribute": {
                    "type": "string",
                    "title": "picture_attribute"
                  },
                  "enforceSso": {
                    "type": "boolean",
                    "title": "enforce_sso"
                  },
                  "allowJitProvisioning": {
                    "type": "boolean",
                    "title": "allow_jit_provisioning"
                  },
                  "isActive": {
                    "type": "boolean",
                    "title": "is_active"
                  }
                },
                "title": "UpdateSAMLProviderRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateSAMLProviderResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/service_accounts": {
      "get": {
        "tags": [
          "nokku.v1.ServiceAccountService"
        ],
        "summary": "ListServiceAccounts",
        "operationId": "nokku.v1.ServiceAccountService.ListServiceAccounts",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "query"
            }
          },
          {
            "name": "roleName",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "role_name"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "tags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListServiceAccountsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.ServiceAccountService"
        ],
        "summary": "CreateServiceAccount",
        "operationId": "nokku.v1.ServiceAccountService.CreateServiceAccount",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "roleName": {
                    "type": "string",
                    "title": "role_name",
                    "pattern": "^(viewer|editor)?$"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "tags"
                  },
                  "expiresAt": {
                    "title": "expires_at",
                    "$ref": "#/components/schemas/google.protobuf.Timestamp"
                  }
                },
                "title": "CreateServiceAccountRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateServiceAccountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/service_accounts/{id}": {
      "get": {
        "tags": [
          "nokku.v1.ServiceAccountService"
        ],
        "summary": "GetServiceAccount",
        "operationId": "nokku.v1.ServiceAccountService.GetServiceAccount",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetServiceAccountResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.ServiceAccountService"
        ],
        "summary": "DeleteServiceAccount",
        "operationId": "nokku.v1.ServiceAccountService.DeleteServiceAccount",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteServiceAccountResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.ServiceAccountService"
        ],
        "summary": "UpdateServiceAccount",
        "operationId": "nokku.v1.ServiceAccountService.UpdateServiceAccount",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "roleName": {
                    "type": "string",
                    "title": "role_name",
                    "pattern": "^(viewer|editor)?$"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "tags"
                  }
                },
                "title": "UpdateServiceAccountRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateServiceAccountResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/settings": {
      "patch": {
        "tags": [
          "nokku.v1.WorkspaceService"
        ],
        "summary": "UpdateWorkspaceSettings",
        "operationId": "nokku.v1.WorkspaceService.UpdateWorkspaceSettings",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enrollAutoApprove": {
                    "type": "boolean",
                    "title": "enroll_auto_approve"
                  },
                  "enrollExpiry": {
                    "title": "enroll_expiry",
                    "description": "duration.gte = 5m0s\nduration.gte_lt = 5m0s\nduration.gte_lt_exclusive = 5m0s\nduration.gte_lte = 5m0s\nduration.gte_lte_exclusive = 5m0s\nduration.lte = 720h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  },
                  "inviteExpiry": {
                    "title": "invite_expiry",
                    "description": "duration.gte = 5m0s\nduration.gte_lt = 5m0s\nduration.gte_lt_exclusive = 5m0s\nduration.gte_lte = 5m0s\nduration.gte_lte_exclusive = 5m0s\nduration.lte = 720h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  }
                },
                "title": "UpdateWorkspaceSettingsRequest",
                "additionalProperties": false,
                "description": "Settings -------------------------------------------------------------------"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateWorkspaceSettingsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/sign-ssh": {
      "post": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "SignSSHCertificate",
        "operationId": "nokku.v1.CertificateService.SignSSHCertificate",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "caId": {
                    "type": "string",
                    "title": "ca_id",
                    "format": "uuid"
                  },
                  "targetId": {
                    "type": "string",
                    "title": "target_id",
                    "format": "uuid"
                  },
                  "type": {
                    "title": "type",
                    "$ref": "#/components/schemas/nokku.v1.SignSSHCertificateRequest.CertificateType"
                  },
                  "publicKey": {
                    "type": "string",
                    "title": "public_key",
                    "maxLength": 10000,
                    "minLength": 1
                  },
                  "ttl": {
                    "title": "ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  }
                },
                "title": "SignSSHCertificateRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SignSSHCertificateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/sign-x509": {
      "post": {
        "tags": [
          "nokku.v1.CertificateService"
        ],
        "summary": "SignX509Certificate",
        "operationId": "nokku.v1.CertificateService.SignX509Certificate",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "caId": {
                    "type": "string",
                    "title": "ca_id",
                    "format": "uuid"
                  },
                  "csr": {
                    "type": "string",
                    "title": "csr",
                    "maxLength": 10000,
                    "minLength": 1
                  },
                  "usage": {
                    "title": "usage",
                    "$ref": "#/components/schemas/nokku.v1.SignX509CertificateRequest.X509Usage"
                  },
                  "ttl": {
                    "title": "ttl",
                    "description": "duration.gte = 1m0s\nduration.gte_lt = 1m0s\nduration.gte_lt_exclusive = 1m0s\nduration.gte_lte = 1m0s\nduration.gte_lte_exclusive = 1m0s\nduration.lte = 8760h0m0s\n",
                    "$ref": "#/components/schemas/google.protobuf.Duration"
                  }
                },
                "title": "SignX509CertificateRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.SignX509CertificateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/targets": {
      "get": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "ListTargets",
        "operationId": "nokku.v1.TargetService.ListTargets",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "query"
            }
          },
          {
            "name": "daemonId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "daemon_id"
            }
          },
          {
            "name": "caId",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "ca_id"
            }
          },
          {
            "name": "principals",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "principals"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "tags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListTargetsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "CreateTarget",
        "operationId": "nokku.v1.TargetService.CreateTarget",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "caId": {
                    "type": "string",
                    "title": "ca_id",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "endpoints": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "endpoints"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "tags"
                  }
                },
                "title": "CreateTargetRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateTargetResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/targets/access": {
      "post": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "GetSubjectAccess",
        "operationId": "nokku.v1.TargetService.GetSubjectAccess",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "subjectId": {
                    "type": "string",
                    "title": "subject_id",
                    "format": "uuid"
                  }
                },
                "title": "GetSubjectAccessRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetSubjectAccessResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/targets/filters": {
      "get": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "GetTargetFilters",
        "operationId": "nokku.v1.TargetService.GetTargetFilters",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetTargetFiltersResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/targets/{id}": {
      "get": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "GetTarget",
        "operationId": "nokku.v1.TargetService.GetTarget",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetTargetResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "DeleteTarget",
        "operationId": "nokku.v1.TargetService.DeleteTarget",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteTargetResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.TargetService"
        ],
        "summary": "UpdateTarget",
        "operationId": "nokku.v1.TargetService.UpdateTarget",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "caId": {
                    "type": "string",
                    "title": "ca_id",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_]*$"
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "endpoints": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "endpoints"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "tags"
                  }
                },
                "title": "UpdateTargetRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateTargetResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/teams": {
      "get": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "ListTeams",
        "operationId": "nokku.v1.TeamService.ListTeams",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "limit",
              "maximum": 100,
              "minimum": 1,
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "title": "offset",
              "minimum": 0,
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string",
              "title": "query"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "tags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.ListTeamsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "CreateTeam",
        "operationId": "nokku.v1.TeamService.CreateTeam",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "tags"
                  }
                },
                "title": "CreateTeamRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.CreateTeamResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/teams/{id}": {
      "get": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "GetTeam",
        "operationId": "nokku.v1.TeamService.GetTeam",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.GetTeamResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "DeleteTeam",
        "operationId": "nokku.v1.TeamService.DeleteTeam",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.DeleteTeamResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "UpdateTeam",
        "operationId": "nokku.v1.TeamService.UpdateTeam",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "id",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "title": "name",
                    "maxLength": 256,
                    "minLength": 1
                  },
                  "description": {
                    "type": "string",
                    "title": "description",
                    "maxLength": 1000
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "tags"
                  }
                },
                "title": "UpdateTeamRequest",
                "additionalProperties": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.UpdateTeamResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workspaces/{workspace_id}/teams/{team_id}/members/{user_id}": {
      "post": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "AddTeamMember",
        "operationId": "nokku.v1.TeamService.AddTeamMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "team_id",
              "format": "uuid"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "user_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.AddTeamMemberResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "nokku.v1.TeamService"
        ],
        "summary": "RemoveTeamMember",
        "operationId": "nokku.v1.TeamService.RemoveTeamMember",
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "workspace_id",
              "format": "uuid"
            }
          },
          {
            "name": "team_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "team_id",
              "format": "uuid"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "user_id",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nokku.v1.RemoveTeamMemberResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "nokku.v1.UserService"
    },
    {
      "name": "nokku.v1.AuthService"
    },
    {
      "name": "nokku.v1.BillingService"
    },
    {
      "name": "nokku.v1.CertificateService"
    },
    {
      "name": "nokku.v1.CredentialService"
    },
    {
      "name": "nokku.v1.DaemonService"
    },
    {
      "name": "nokku.v1.DaemonControlService"
    },
    {
      "name": "nokku.v1.DaemonSessionService"
    },
    {
      "name": "nokku.v1.InvitationService"
    },
    {
      "name": "nokku.v1.LicenseService"
    },
    {
      "name": "nokku.v1.PrincipalService"
    },
    {
      "name": "nokku.v1.ServiceAccountService"
    },
    {
      "name": "nokku.v1.SSOService"
    },
    {
      "name": "nokku.v1.TargetService"
    },
    {
      "name": "nokku.v1.WorkspaceService"
    },
    {
      "name": "nokku.v1.TeamService"
    },
    {
      "name": "nokku.v1.UtilService"
    },
    {
      "name": "nokku.v1.WorkspaceDomainService"
    }
  ]
}