mirror of
https://github.com/passbolt/go-passbolt.git
synced 2025-05-10 18:08:21 +00:00
86 lines
2.6 KiB
Go
86 lines
2.6 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
)
|
|
|
|
type MetadataKeyType string
|
|
|
|
const (
|
|
MetadataKeyTypeUserKey MetadataKeyType = "user_key"
|
|
MetadataKeyTypeSharedKey MetadataKeyType = "shared_key"
|
|
)
|
|
|
|
func (s MetadataKeyType) IsValid() bool {
|
|
switch s {
|
|
case MetadataKeyTypeUserKey, MetadataKeyTypeSharedKey:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// MetadataKey is a MetadataKey
|
|
type MetadataKey struct {
|
|
ID string `json:"id,omitempty"`
|
|
Fingerprint string `json:"fingerprint,omitempty"`
|
|
ArmoredKey string `json:"armored_key,omitempty"`
|
|
Created Time `json:"created,omitempty"`
|
|
Modified Time `json:"modified,omitempty"`
|
|
|
|
// These are always null? Used for Key Rotation?
|
|
//"expired": null,
|
|
//"deleted": null,
|
|
|
|
CreatedBy *string `json:"created_by,omitempty"`
|
|
ModifiedBy *string `json:"modified_by,omitempty"`
|
|
|
|
MetadataPrivateKeys []MetadataPrivateKey `json:"metadata_private_keys,omitempty"`
|
|
}
|
|
|
|
// MetadataPrivateKey is a MetadataPrivateKey
|
|
type MetadataPrivateKey struct {
|
|
ID string `json:"id,omitempty"`
|
|
MetadataKeyID string `json:"metadata_key_id,omitempty"`
|
|
UserID *string `json:"user_id,omitempty"` // TODO, is this nullable. The Docs says yes and no
|
|
Data string `json:"data,omitempty"`
|
|
Created Time `json:"created,omitempty"`
|
|
Modified Time `json:"modified,omitempty"`
|
|
CreatedBy *string `json:"created_by,omitempty"`
|
|
ModifiedBy *string `json:"modified_by,omitempty"`
|
|
}
|
|
|
|
// MetadataPrivateKeyData is a MetadataPrivateKeyData
|
|
type MetadataPrivateKeyData struct {
|
|
// ObjectType Must always be PASSBOLT_METADATA_PRIVATE_KEY
|
|
ObjectType string `json:"object_type,omitempty"`
|
|
// Domain Must be the Passbolt Server URL
|
|
Domain string `json:"domain,omitempty"`
|
|
Fingerprint string `json:"fingerprint,omitempty"`
|
|
ArmoredKey string `json:"armored_key,omitempty"`
|
|
// Passphrase must be Empty for Server Keys
|
|
Passphrase string `json:"passphrase,omitempty"`
|
|
}
|
|
|
|
// GetMetadataKeysOptions are all available query parameters
|
|
type GetMetadataKeysOptions struct {
|
|
FilterDeleted bool `url:"filter[deleted],omitempty"`
|
|
FilterExpired bool `url:"filter[expired],omitempty"`
|
|
|
|
ContainMetadataPrivateKeys bool `url:"contain[metadata_private_keys],omitempty"`
|
|
}
|
|
|
|
// GetMetadataKeys gets all Passbolt GetMetadataKeys
|
|
func (c *Client) GetMetadataKeys(ctx context.Context, opts *GetMetadataKeysOptions) ([]MetadataKey, error) {
|
|
msg, err := c.DoCustomRequestV5(ctx, "GET", "/metadata/keys.json", nil, opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var metadataKeys []MetadataKey
|
|
err = json.Unmarshal(msg.Body, &metadataKeys)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return metadataKeys, nil
|
|
}
|