// Package badge provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT.
package badge

import (
	"time"

	core "github.com/meshery/schemas/models/core"
	"github.com/gofrs/uuid"
)

// Badge Badge entity — a named recognition issued within an organization.
type Badge struct {
	// CreatedAt Timestamp when the badge was created.
	CreatedAt time.Time `db:"created_at" json:"createdAt" yaml:"createdAt"`

	// DeletedAt Timestamp when the badge was soft-deleted, if applicable.
	DeletedAt core.NullTime `db:"deleted_at" json:"deletedAt" yaml:"deletedAt"`

	// Description A description of the milestone achieved, often including criteria for receiving this recognition.
	Description string `db:"description" json:"description" yaml:"description"`

	// Id A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	ID core.Uuid `db:"id" json:"id" yaml:"id"`

	// ImageUrl URL to the badge image.
	ImageUrl string `db:"image_url" json:"imageUrl" yaml:"imageUrl"`

	// Label Unique identifier for the badge, typically slug-style (auto generated).
	Label string `db:"label" json:"label" yaml:"label"`

	// Name Concise descriptor for the badge or certificate.
	Name string `db:"name" json:"name" yaml:"name"`

	// OrgId A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	OrgID core.Uuid `db:"org_id" json:"orgId" yaml:"orgId"`

	// UpdatedAt Timestamp when the badge was last updated.
	UpdatedAt time.Time `db:"updated_at" json:"updatedAt" yaml:"updatedAt"`
}

// BadgeAssignmentPayload Payload for assigning a set of badges to a user.
type BadgeAssignmentPayload struct {
	// Badges Labels of the badges being assigned to the user.
	Badges []string `json:"badges" yaml:"badges"`

	// Notify When true, send a notification to the user about the new badge assignment.
	Notify *bool `json:"notify,omitempty" yaml:"notify,omitempty"`

	// UserID ID of the user to receive the badges.
	UserID uuid.UUID `json:"userId" yaml:"userId"`
}

// BadgePayload Payload for creating or updating a badge.
type BadgePayload struct {
	// Description A description of the milestone achieved, often including criteria for receiving this recognition.
	Description string `db:"description" json:"description" yaml:"description"`

	// Id A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	ID *core.Uuid `db:"id" json:"id,omitempty" yaml:"id,omitempty"`

	// ImageUrl URL to the badge image.
	ImageUrl string `db:"image_url" json:"imageUrl" yaml:"imageUrl"`

	// Label Unique identifier for the badge, typically slug-style (auto generated).
	Label string `db:"label" json:"label" yaml:"label"`

	// Name Concise descriptor for the badge or certificate.
	Name string `db:"name" json:"name" yaml:"name"`

	// OrgId A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	OrgID core.Uuid `db:"org_id" json:"orgId" yaml:"orgId"`
}

// BadgesPage Map of badges available in an organization, keyed by badge label.
type BadgesPage struct {
	// Badges Available badges, keyed by badge label.
	Badges *map[string]Badge `json:"badges,omitempty" yaml:"badges,omitempty"`
}

// BadgeId A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
type BadgeId = core.Uuid

// OrgIdQuery defines model for orgIdQuery.
type OrgIdQuery = uuid.UUID
