Files
OpenShell/proto/datamodel.proto
John T. Myers d255cdd9c9 feat(providers): add credential refresh foundation (#1349)
* feat(providers): add credential refresh foundation

* feat(providers): mint oauth refresh token credentials

* fix(providers): allow delegated refresh bootstrap

* fix(providers): guard refresh credential modes

* fix(providers): refine refresh lifecycle UX

* fix(cli): restore provider test gateway response import

* fix(server): clean auth endpoint test qualifications

* fix(providers): tighten refresh authorization and collisions

* chore(providers): trim bundled v2 profiles

* fix(providers): resolve refresh rebase fallout

* fix(cli): accept rfc3339 credential expiry

* test(providers): update inferred claude provider type

* test(providers): avoid removed outlook default profile

* test(providers): isolate attach limit fixtures
2026-05-19 07:42:10 -07:00

45 lines
1.6 KiB
Protocol Buffer

// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package openshell.datamodel.v1;
// Kubernetes-style metadata shared by all top-level OpenShell domain objects.
//
// This structure provides consistent metadata (identity, labels, timestamps,
// resource versioning) across Sandbox, Provider, SshSession, and other resources.
message ObjectMeta {
// Stable object ID generated by the gateway.
string id = 1;
// Human-readable object name (unique per object type).
string name = 2;
// Milliseconds since Unix epoch when the object was created.
int64 created_at_ms = 3;
// Key-value labels for filtering and organization.
// Labels must follow Kubernetes conventions: alphanumeric + `-._/`, max 63 chars per segment.
map<string, string> labels = 4;
// Optimistic concurrency control version.
// Incremented by the gateway on each update. Clients can use this for compare-and-swap operations.
uint64 resource_version = 5;
}
// Provider model stored by OpenShell.
message Provider {
// Kubernetes-style metadata (id, name, labels, timestamps, resource version).
ObjectMeta metadata = 1;
// Canonical provider type slug (for example: "claude", "gitlab").
string type = 2;
// Secret values used for authentication.
map<string, string> credentials = 3;
// Non-secret provider configuration.
map<string, string> config = 4;
// Expiration timestamps for credential values, keyed by credential/env var
// name. A zero or missing value means the credential does not expire.
map<string, int64> credential_expires_at_ms = 5;
}