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

import (
	"encoding/json"
	"time"

	"github.com/oapi-codegen/runtime"
	openapi_types "github.com/oapi-codegen/runtime/types"
)

const (
	BearerAuthScopes bearerAuthContextKey = "bearerAuth.Scopes"
)

// Defines values for ArchiveConflictResponseError.
const (
	Conflict ArchiveConflictResponseError = "conflict"
)

// Valid indicates whether the value is a known member of the ArchiveConflictResponseError enum.
func (e ArchiveConflictResponseError) Valid() bool {
	switch e {
	case Conflict:
		return true
	default:
		return false
	}
}

// Defines values for DeleteSkillResponseStatus.
const (
	DeleteSkillResponseStatusDeleted DeleteSkillResponseStatus = "deleted"
)

// Valid indicates whether the value is a known member of the DeleteSkillResponseStatus enum.
func (e DeleteSkillResponseStatus) Valid() bool {
	switch e {
	case DeleteSkillResponseStatusDeleted:
		return true
	default:
		return false
	}
}

// Defines values for EnrichedSuggestionStatus.
const (
	EnrichedSuggestionStatusAccepted EnrichedSuggestionStatus = "accepted"
	EnrichedSuggestionStatusDeclined EnrichedSuggestionStatus = "declined"
	EnrichedSuggestionStatusPending  EnrichedSuggestionStatus = "pending"
)

// Valid indicates whether the value is a known member of the EnrichedSuggestionStatus enum.
func (e EnrichedSuggestionStatus) Valid() bool {
	switch e {
	case EnrichedSuggestionStatusAccepted:
		return true
	case EnrichedSuggestionStatusDeclined:
		return true
	case EnrichedSuggestionStatusPending:
		return true
	default:
		return false
	}
}

// Defines values for HealthStatus.
const (
	Ok HealthStatus = "ok"
)

// Valid indicates whether the value is a known member of the HealthStatus enum.
func (e HealthStatus) Valid() bool {
	switch e {
	case Ok:
		return true
	default:
		return false
	}
}

// Defines values for OrgDeleteBlockedError.
const (
	OrgOwnsSkills OrgDeleteBlockedError = "org_owns_skills"
)

// Valid indicates whether the value is a known member of the OrgDeleteBlockedError enum.
func (e OrgDeleteBlockedError) Valid() bool {
	switch e {
	case OrgOwnsSkills:
		return true
	default:
		return false
	}
}

// Defines values for OrgDeleteResponseDeleted.
const (
	OrgDeleteResponseDeletedTrue OrgDeleteResponseDeleted = true
)

// Valid indicates whether the value is a known member of the OrgDeleteResponseDeleted enum.
func (e OrgDeleteResponseDeleted) Valid() bool {
	switch e {
	case OrgDeleteResponseDeletedTrue:
		return true
	default:
		return false
	}
}

// Defines values for OrgInviteAcceptResponseOk.
const (
	OrgInviteAcceptResponseOkTrue OrgInviteAcceptResponseOk = true
)

// Valid indicates whether the value is a known member of the OrgInviteAcceptResponseOk enum.
func (e OrgInviteAcceptResponseOk) Valid() bool {
	switch e {
	case OrgInviteAcceptResponseOkTrue:
		return true
	default:
		return false
	}
}

// Defines values for OrgInviteRecordRole.
const (
	OrgInviteRecordRoleAdmin  OrgInviteRecordRole = "admin"
	OrgInviteRecordRoleMember OrgInviteRecordRole = "member"
	OrgInviteRecordRoleOwner  OrgInviteRecordRole = "owner"
)

// Valid indicates whether the value is a known member of the OrgInviteRecordRole enum.
func (e OrgInviteRecordRole) Valid() bool {
	switch e {
	case OrgInviteRecordRoleAdmin:
		return true
	case OrgInviteRecordRoleMember:
		return true
	case OrgInviteRecordRoleOwner:
		return true
	default:
		return false
	}
}

// Defines values for OrgMemberRole.
const (
	OrgMemberRoleAdmin  OrgMemberRole = "admin"
	OrgMemberRoleMember OrgMemberRole = "member"
	OrgMemberRoleOwner  OrgMemberRole = "owner"
)

// Valid indicates whether the value is a known member of the OrgMemberRole enum.
func (e OrgMemberRole) Valid() bool {
	switch e {
	case OrgMemberRoleAdmin:
		return true
	case OrgMemberRoleMember:
		return true
	case OrgMemberRoleOwner:
		return true
	default:
		return false
	}
}

// Defines values for OrgWithMembershipRole.
const (
	OrgWithMembershipRoleAdmin  OrgWithMembershipRole = "admin"
	OrgWithMembershipRoleMember OrgWithMembershipRole = "member"
	OrgWithMembershipRoleOwner  OrgWithMembershipRole = "owner"
)

// Valid indicates whether the value is a known member of the OrgWithMembershipRole enum.
func (e OrgWithMembershipRole) Valid() bool {
	switch e {
	case OrgWithMembershipRoleAdmin:
		return true
	case OrgWithMembershipRoleMember:
		return true
	case OrgWithMembershipRoleOwner:
		return true
	default:
		return false
	}
}

// Defines values for OwnerNamespaceKind.
const (
	OwnerNamespaceKindOrg  OwnerNamespaceKind = "org"
	OwnerNamespaceKindUser OwnerNamespaceKind = "user"
)

// Valid indicates whether the value is a known member of the OwnerNamespaceKind enum.
func (e OwnerNamespaceKind) Valid() bool {
	switch e {
	case OwnerNamespaceKindOrg:
		return true
	case OwnerNamespaceKindUser:
		return true
	default:
		return false
	}
}

// Defines values for ProfileRole.
const (
	ProfileRoleAdmin  ProfileRole = "admin"
	ProfileRoleMember ProfileRole = "member"
)

// Valid indicates whether the value is a known member of the ProfileRole enum.
func (e ProfileRole) Valid() bool {
	switch e {
	case ProfileRoleAdmin:
		return true
	case ProfileRoleMember:
		return true
	default:
		return false
	}
}

// Defines values for RefResolveResultStatus.
const (
	RefResolveResultStatusDeleted RefResolveResultStatus = "deleted"
	RefResolveResultStatusMoved   RefResolveResultStatus = "moved"
	RefResolveResultStatusUnknown RefResolveResultStatus = "unknown"
)

// Valid indicates whether the value is a known member of the RefResolveResultStatus enum.
func (e RefResolveResultStatus) Valid() bool {
	switch e {
	case RefResolveResultStatusDeleted:
		return true
	case RefResolveResultStatusMoved:
		return true
	case RefResolveResultStatusUnknown:
		return true
	default:
		return false
	}
}

// Defines values for ResolveTransferredResponseError.
const (
	SkillTransferred ResolveTransferredResponseError = "skill transferred"
)

// Valid indicates whether the value is a known member of the ResolveTransferredResponseError enum.
func (e ResolveTransferredResponseError) Valid() bool {
	switch e {
	case SkillTransferred:
		return true
	default:
		return false
	}
}

// Defines values for ResolveTransferredResponseMovedToKind.
const (
	ResolveTransferredResponseMovedToKindOrg  ResolveTransferredResponseMovedToKind = "org"
	ResolveTransferredResponseMovedToKindUser ResolveTransferredResponseMovedToKind = "user"
)

// Valid indicates whether the value is a known member of the ResolveTransferredResponseMovedToKind enum.
func (e ResolveTransferredResponseMovedToKind) Valid() bool {
	switch e {
	case ResolveTransferredResponseMovedToKindOrg:
		return true
	case ResolveTransferredResponseMovedToKindUser:
		return true
	default:
		return false
	}
}

// Defines values for ResolvedBundleResponseType.
const (
	Bundle ResolvedBundleResponseType = "bundle"
)

// Valid indicates whether the value is a known member of the ResolvedBundleResponseType enum.
func (e ResolvedBundleResponseType) Valid() bool {
	switch e {
	case Bundle:
		return true
	default:
		return false
	}
}

// Defines values for ResolvedBundleResponseVisibility.
const (
	ResolvedBundleResponseVisibilityPrivate  ResolvedBundleResponseVisibility = "private"
	ResolvedBundleResponseVisibilityPublic   ResolvedBundleResponseVisibility = "public"
	ResolvedBundleResponseVisibilityUnlisted ResolvedBundleResponseVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the ResolvedBundleResponseVisibility enum.
func (e ResolvedBundleResponseVisibility) Valid() bool {
	switch e {
	case ResolvedBundleResponseVisibilityPrivate:
		return true
	case ResolvedBundleResponseVisibilityPublic:
		return true
	case ResolvedBundleResponseVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for ResolvedSkillResponseType.
const (
	ResolvedSkillResponseTypeSkill ResolvedSkillResponseType = "skill"
)

// Valid indicates whether the value is a known member of the ResolvedSkillResponseType enum.
func (e ResolvedSkillResponseType) Valid() bool {
	switch e {
	case ResolvedSkillResponseTypeSkill:
		return true
	default:
		return false
	}
}

// Defines values for ResolvedSkillResponseVisibility.
const (
	ResolvedSkillResponseVisibilityPrivate  ResolvedSkillResponseVisibility = "private"
	ResolvedSkillResponseVisibilityPublic   ResolvedSkillResponseVisibility = "public"
	ResolvedSkillResponseVisibilityUnlisted ResolvedSkillResponseVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the ResolvedSkillResponseVisibility enum.
func (e ResolvedSkillResponseVisibility) Valid() bool {
	switch e {
	case ResolvedSkillResponseVisibilityPrivate:
		return true
	case ResolvedSkillResponseVisibilityPublic:
		return true
	case ResolvedSkillResponseVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for ShareRevokedResponseStatus.
const (
	Revoked ShareRevokedResponseStatus = "revoked"
)

// Valid indicates whether the value is a known member of the ShareRevokedResponseStatus enum.
func (e ShareRevokedResponseStatus) Valid() bool {
	switch e {
	case Revoked:
		return true
	default:
		return false
	}
}

// Defines values for SkillVisibility.
const (
	SkillVisibilityPrivate  SkillVisibility = "private"
	SkillVisibilityPublic   SkillVisibility = "public"
	SkillVisibilityUnlisted SkillVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the SkillVisibility enum.
func (e SkillVisibility) Valid() bool {
	switch e {
	case SkillVisibilityPrivate:
		return true
	case SkillVisibilityPublic:
		return true
	case SkillVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for SkillDependencyEdgeVisibility.
const (
	SkillDependencyEdgeVisibilityLessThannil SkillDependencyEdgeVisibility = "<nil>"
	SkillDependencyEdgeVisibilityPrivate     SkillDependencyEdgeVisibility = "private"
	SkillDependencyEdgeVisibilityPublic      SkillDependencyEdgeVisibility = "public"
	SkillDependencyEdgeVisibilityUnlisted    SkillDependencyEdgeVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the SkillDependencyEdgeVisibility enum.
func (e SkillDependencyEdgeVisibility) Valid() bool {
	switch e {
	case SkillDependencyEdgeVisibilityLessThannil:
		return true
	case SkillDependencyEdgeVisibilityPrivate:
		return true
	case SkillDependencyEdgeVisibilityPublic:
		return true
	case SkillDependencyEdgeVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for SkillDetailVisibility.
const (
	SkillDetailVisibilityPrivate  SkillDetailVisibility = "private"
	SkillDetailVisibilityPublic   SkillDetailVisibility = "public"
	SkillDetailVisibilityUnlisted SkillDetailVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the SkillDetailVisibility enum.
func (e SkillDetailVisibility) Valid() bool {
	switch e {
	case SkillDetailVisibilityPrivate:
		return true
	case SkillDetailVisibilityPublic:
		return true
	case SkillDetailVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for SuggestionStatus.
const (
	SuggestionStatusAccepted SuggestionStatus = "accepted"
	SuggestionStatusDeclined SuggestionStatus = "declined"
	SuggestionStatusPending  SuggestionStatus = "pending"
)

// Valid indicates whether the value is a known member of the SuggestionStatus enum.
func (e SuggestionStatus) Valid() bool {
	switch e {
	case SuggestionStatusAccepted:
		return true
	case SuggestionStatusDeclined:
		return true
	case SuggestionStatusPending:
		return true
	default:
		return false
	}
}

// Defines values for UpdateSkillResponseVisibility.
const (
	UpdateSkillResponseVisibilityPrivate  UpdateSkillResponseVisibility = "private"
	UpdateSkillResponseVisibilityPublic   UpdateSkillResponseVisibility = "public"
	UpdateSkillResponseVisibilityUnlisted UpdateSkillResponseVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the UpdateSkillResponseVisibility enum.
func (e UpdateSkillResponseVisibility) Valid() bool {
	switch e {
	case UpdateSkillResponseVisibilityPrivate:
		return true
	case UpdateSkillResponseVisibilityPublic:
		return true
	case UpdateSkillResponseVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for PostApiV1OrganizationInviteJSONBodyRole.
const (
	Admin  PostApiV1OrganizationInviteJSONBodyRole = "admin"
	Member PostApiV1OrganizationInviteJSONBodyRole = "member"
)

// Valid indicates whether the value is a known member of the PostApiV1OrganizationInviteJSONBodyRole enum.
func (e PostApiV1OrganizationInviteJSONBodyRole) Valid() bool {
	switch e {
	case Admin:
		return true
	case Member:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SkillsParamsScope.
const (
	GetApiV1SkillsParamsScopeOrg      GetApiV1SkillsParamsScope = "org"
	GetApiV1SkillsParamsScopePersonal GetApiV1SkillsParamsScope = "personal"
)

// Valid indicates whether the value is a known member of the GetApiV1SkillsParamsScope enum.
func (e GetApiV1SkillsParamsScope) Valid() bool {
	switch e {
	case GetApiV1SkillsParamsScopeOrg:
		return true
	case GetApiV1SkillsParamsScopePersonal:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SkillsParamsDeleted.
const (
	False GetApiV1SkillsParamsDeleted = "false"
	True  GetApiV1SkillsParamsDeleted = "true"
)

// Valid indicates whether the value is a known member of the GetApiV1SkillsParamsDeleted enum.
func (e GetApiV1SkillsParamsDeleted) Valid() bool {
	switch e {
	case False:
		return true
	case True:
		return true
	default:
		return false
	}
}

// Defines values for PostApiV1SkillsJSONBodyVisibility.
const (
	PostApiV1SkillsJSONBodyVisibilityPrivate PostApiV1SkillsJSONBodyVisibility = "private"
	PostApiV1SkillsJSONBodyVisibilityPublic  PostApiV1SkillsJSONBodyVisibility = "public"
)

// Valid indicates whether the value is a known member of the PostApiV1SkillsJSONBodyVisibility enum.
func (e PostApiV1SkillsJSONBodyVisibility) Valid() bool {
	switch e {
	case PostApiV1SkillsJSONBodyVisibilityPrivate:
		return true
	case PostApiV1SkillsJSONBodyVisibilityPublic:
		return true
	default:
		return false
	}
}

// Defines values for PutApiV1SkillsIdJSONBodyVisibility.
const (
	PutApiV1SkillsIdJSONBodyVisibilityPrivate  PutApiV1SkillsIdJSONBodyVisibility = "private"
	PutApiV1SkillsIdJSONBodyVisibilityPublic   PutApiV1SkillsIdJSONBodyVisibility = "public"
	PutApiV1SkillsIdJSONBodyVisibilityUnlisted PutApiV1SkillsIdJSONBodyVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the PutApiV1SkillsIdJSONBodyVisibility enum.
func (e PutApiV1SkillsIdJSONBodyVisibility) Valid() bool {
	switch e {
	case PutApiV1SkillsIdJSONBodyVisibilityPrivate:
		return true
	case PutApiV1SkillsIdJSONBodyVisibilityPublic:
		return true
	case PutApiV1SkillsIdJSONBodyVisibilityUnlisted:
		return true
	default:
		return false
	}
}

// Defines values for PutApiV1SkillsIdArchiveParamsXVisibility.
const (
	Private  PutApiV1SkillsIdArchiveParamsXVisibility = "private"
	Public   PutApiV1SkillsIdArchiveParamsXVisibility = "public"
	Unlisted PutApiV1SkillsIdArchiveParamsXVisibility = "unlisted"
)

// Valid indicates whether the value is a known member of the PutApiV1SkillsIdArchiveParamsXVisibility enum.
func (e PutApiV1SkillsIdArchiveParamsXVisibility) Valid() bool {
	switch e {
	case Private:
		return true
	case Public:
		return true
	case Unlisted:
		return true
	default:
		return false
	}
}

// Defines values for PostApiV1SkillsIdTransferJSONBodyToKind.
const (
	PostApiV1SkillsIdTransferJSONBodyToKindOrg  PostApiV1SkillsIdTransferJSONBodyToKind = "org"
	PostApiV1SkillsIdTransferJSONBodyToKindUser PostApiV1SkillsIdTransferJSONBodyToKind = "user"
)

// Valid indicates whether the value is a known member of the PostApiV1SkillsIdTransferJSONBodyToKind enum.
func (e PostApiV1SkillsIdTransferJSONBodyToKind) Valid() bool {
	switch e {
	case PostApiV1SkillsIdTransferJSONBodyToKindOrg:
		return true
	case PostApiV1SkillsIdTransferJSONBodyToKindUser:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SuggestionsParamsRole.
const (
	GetApiV1SuggestionsParamsRoleOwner     GetApiV1SuggestionsParamsRole = "owner"
	GetApiV1SuggestionsParamsRoleSuggester GetApiV1SuggestionsParamsRole = "suggester"
)

// Valid indicates whether the value is a known member of the GetApiV1SuggestionsParamsRole enum.
func (e GetApiV1SuggestionsParamsRole) Valid() bool {
	switch e {
	case GetApiV1SuggestionsParamsRoleOwner:
		return true
	case GetApiV1SuggestionsParamsRoleSuggester:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SuggestionsParamsStatus.
const (
	GetApiV1SuggestionsParamsStatusAccepted GetApiV1SuggestionsParamsStatus = "accepted"
	GetApiV1SuggestionsParamsStatusDeclined GetApiV1SuggestionsParamsStatus = "declined"
	GetApiV1SuggestionsParamsStatusPending  GetApiV1SuggestionsParamsStatus = "pending"
)

// Valid indicates whether the value is a known member of the GetApiV1SuggestionsParamsStatus enum.
func (e GetApiV1SuggestionsParamsStatus) Valid() bool {
	switch e {
	case GetApiV1SuggestionsParamsStatusAccepted:
		return true
	case GetApiV1SuggestionsParamsStatusDeclined:
		return true
	case GetApiV1SuggestionsParamsStatusPending:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SuggestionsParamsCount.
const (
	N1 GetApiV1SuggestionsParamsCount = "1"
)

// Valid indicates whether the value is a known member of the GetApiV1SuggestionsParamsCount enum.
func (e GetApiV1SuggestionsParamsCount) Valid() bool {
	switch e {
	case N1:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SuggestionsCountParamsRole.
const (
	GetApiV1SuggestionsCountParamsRoleOwner     GetApiV1SuggestionsCountParamsRole = "owner"
	GetApiV1SuggestionsCountParamsRoleSuggester GetApiV1SuggestionsCountParamsRole = "suggester"
)

// Valid indicates whether the value is a known member of the GetApiV1SuggestionsCountParamsRole enum.
func (e GetApiV1SuggestionsCountParamsRole) Valid() bool {
	switch e {
	case GetApiV1SuggestionsCountParamsRoleOwner:
		return true
	case GetApiV1SuggestionsCountParamsRoleSuggester:
		return true
	default:
		return false
	}
}

// Defines values for GetApiV1SuggestionsCountParamsStatus.
const (
	GetApiV1SuggestionsCountParamsStatusAccepted GetApiV1SuggestionsCountParamsStatus = "accepted"
	GetApiV1SuggestionsCountParamsStatusDeclined GetApiV1SuggestionsCountParamsStatus = "declined"
	GetApiV1SuggestionsCountParamsStatusPending  GetApiV1SuggestionsCountParamsStatus = "pending"
)

// Valid indicates whether the value is a known member of the GetApiV1SuggestionsCountParamsStatus enum.
func (e GetApiV1SuggestionsCountParamsStatus) Valid() bool {
	switch e {
	case GetApiV1SuggestionsCountParamsStatusAccepted:
		return true
	case GetApiV1SuggestionsCountParamsStatusDeclined:
		return true
	case GetApiV1SuggestionsCountParamsStatusPending:
		return true
	default:
		return false
	}
}

// Defines values for PutApiV1SuggestionsIdJSONBodyStatus.
const (
	Accepted PutApiV1SuggestionsIdJSONBodyStatus = "accepted"
	Declined PutApiV1SuggestionsIdJSONBodyStatus = "declined"
)

// Valid indicates whether the value is a known member of the PutApiV1SuggestionsIdJSONBodyStatus enum.
func (e PutApiV1SuggestionsIdJSONBodyStatus) Valid() bool {
	switch e {
	case Accepted:
		return true
	case Declined:
		return true
	default:
		return false
	}
}

// ActiveSkillsetsResponse defines model for ActiveSkillsetsResponse.
type ActiveSkillsetsResponse struct {
	Active Skillset `json:"active"`

	// OrgAssigned Skillsets the caller has been assigned via org membership.
	OrgAssigned []Skillset `json:"org_assigned"`
}

// ArchiveConflictResponse defines model for ArchiveConflictResponse.
type ArchiveConflictResponse struct {
	Error             ArchiveConflictResponseError `json:"error"`
	Message           string                       `json:"message"`
	RemoteCommitId    *openapi_types.UUID          `json:"remote_commit_id"`
	RemoteContentHash *string                      `json:"remote_content_hash"`
}

// ArchiveConflictResponseError defines model for ArchiveConflictResponse.Error.
type ArchiveConflictResponseError string

// ArchivePutResponse defines model for ArchivePutResponse.
type ArchivePutResponse struct {
	ContentHash string `json:"content_hash"`

	// CurrentOwner Resolved namespace at write time. CLI uses this to detect out-of-band transfers. Key absent when owner is unchanged.
	CurrentOwner           *OwnerNamespace    `json:"current_owner,omitempty"`
	HeadCommitId           openapi_types.UUID `json:"head_commit_id"`
	Id                     openapi_types.UUID `json:"id"`
	Name                   string             `json:"name"`
	Slug                   string             `json:"slug"`
	UnresolvedDependencies *[]string          `json:"unresolved_dependencies,omitempty"`
	Version                string             `json:"version"`

	// Warning Soft-limit warnings, e.g. storage usage above 80%.
	Warning *string `json:"warning,omitempty"`
}

// CommitResult defines model for CommitResult.
type CommitResult struct {
	ContentHash  string             `json:"content_hash"`
	HeadCommitId openapi_types.UUID `json:"head_commit_id"`
	Id           openapi_types.UUID `json:"id"`
	Name         string             `json:"name"`
	Slug         string             `json:"slug"`
	Version      string             `json:"version"`
}

// DeleteSkillResponse defines model for DeleteSkillResponse.
type DeleteSkillResponse struct {
	Status DeleteSkillResponseStatus `json:"status"`
}

// DeleteSkillResponseStatus defines model for DeleteSkillResponse.Status.
type DeleteSkillResponseStatus string

// EnrichedSuggestion defines model for EnrichedSuggestion.
type EnrichedSuggestion struct {
	BaseContentHash    string                   `json:"base_content_hash"`
	CreatedAt          time.Time                `json:"created_at"`
	Id                 openapi_types.UUID       `json:"id"`
	Message            *string                  `json:"message"`
	OwnerId            openapi_types.UUID       `json:"owner_id"`
	OwnerSkillId       openapi_types.UUID       `json:"owner_skill_id"`
	OwnerSkillName     *string                  `json:"owner_skill_name"`
	OwnerSkillSlug     *string                  `json:"owner_skill_slug"`
	ResponseMessage    *string                  `json:"response_message"`
	ReviewedAt         *time.Time               `json:"reviewed_at"`
	Status             EnrichedSuggestionStatus `json:"status"`
	SuggesterId        openapi_types.UUID       `json:"suggester_id"`
	SuggesterSkillId   openapi_types.UUID       `json:"suggester_skill_id"`
	SuggesterSkillName *string                  `json:"suggester_skill_name"`
	SuggesterUsername  *string                  `json:"suggester_username"`
	UpdatedAt          time.Time                `json:"updated_at"`
}

// EnrichedSuggestionStatus defines model for EnrichedSuggestion.Status.
type EnrichedSuggestionStatus string

// FileListingResponse defines model for FileListingResponse.
type FileListingResponse struct {
	Files []SkillFile `json:"files"`
}

// Health defines model for Health.
type Health struct {
	Commit    string       `json:"commit"`
	LatestCli string       `json:"latest_cli"`
	Status    HealthStatus `json:"status"`
	Version   string       `json:"version"`
}

// HealthStatus defines model for Health.Status.
type HealthStatus string

// MemberSkillsetAssignment defines model for MemberSkillsetAssignment.
type MemberSkillsetAssignment struct {
	Id         openapi_types.UUID `json:"id"`
	IsAssigned bool               `json:"is_assigned"`
	IsDefault  bool               `json:"is_default"`
	Name       string             `json:"name"`
	Slug       string             `json:"slug"`
}

// MemberSkillsetAssignmentsResponse defines model for MemberSkillsetAssignmentsResponse.
type MemberSkillsetAssignmentsResponse struct {
	Skillsets []MemberSkillsetAssignment `json:"skillsets"`
}

// Org defines model for Org.
type Org struct {
	CreatedAt time.Time          `json:"created_at"`
	Domain    *string            `json:"domain"`
	Id        openapi_types.UUID `json:"id"`
	Name      string             `json:"name"`
	Slug      string             `json:"slug"`
	UpdatedAt time.Time          `json:"updated_at"`
}

// OrgDeleteBlocked defines model for OrgDeleteBlocked.
type OrgDeleteBlocked struct {
	Error      OrgDeleteBlockedError `json:"error"`
	Message    string                `json:"message"`
	SkillCount int                   `json:"skill_count"`
}

// OrgDeleteBlockedError defines model for OrgDeleteBlocked.Error.
type OrgDeleteBlockedError string

// OrgDeleteResponse defines model for OrgDeleteResponse.
type OrgDeleteResponse struct {
	Deleted OrgDeleteResponseDeleted `json:"deleted"`
	Slug    string                   `json:"slug"`
}

// OrgDeleteResponseDeleted defines model for OrgDeleteResponse.Deleted.
type OrgDeleteResponseDeleted bool

// OrgEnvelope defines model for OrgEnvelope.
type OrgEnvelope struct {
	// MemberCount Member count of the resolved org. Omitted on the {org: null} short-circuit (no membership / not found).
	MemberCount *int `json:"member_count,omitempty"`
	Org         Org  `json:"org"`
}

// OrgInviteAcceptResponse defines model for OrgInviteAcceptResponse.
type OrgInviteAcceptResponse struct {
	Ok    OrgInviteAcceptResponseOk `json:"ok"`
	OrgId openapi_types.UUID        `json:"org_id"`
}

// OrgInviteAcceptResponseOk defines model for OrgInviteAcceptResponse.Ok.
type OrgInviteAcceptResponseOk bool

// OrgInviteRecord defines model for OrgInviteRecord.
type OrgInviteRecord struct {
	Email openapi_types.Email `json:"email"`
	Id    openapi_types.UUID  `json:"id"`
	OrgId openapi_types.UUID  `json:"org_id"`
	Role  OrgInviteRecordRole `json:"role"`
}

// OrgInviteRecordRole defines model for OrgInviteRecord.Role.
type OrgInviteRecordRole string

// OrgInviteResponse defines model for OrgInviteResponse.
type OrgInviteResponse struct {
	Invite OrgInviteRecord `json:"invite"`

	// PricingNotice Set when org has hit the free-tier member limit; null otherwise.
	PricingNotice *string `json:"pricing_notice"`
}

// OrgMember defines model for OrgMember.
type OrgMember struct {
	CreatedAt   time.Time          `json:"created_at"`
	DisplayName *string            `json:"display_name"`
	Id          openapi_types.UUID `json:"id"`
	Role        OrgMemberRole      `json:"role"`
	Username    string             `json:"username"`
}

// OrgMemberRole defines model for OrgMember.Role.
type OrgMemberRole string

// OrgMembersListResponse defines model for OrgMembersListResponse.
type OrgMembersListResponse struct {
	Members []OrgMember `json:"members"`
}

// OrgWithMembership defines model for OrgWithMembership.
type OrgWithMembership struct {
	CreatedAt   time.Time             `json:"created_at"`
	Domain      *string               `json:"domain"`
	Id          openapi_types.UUID    `json:"id"`
	MemberCount int                   `json:"member_count"`
	MemberSince time.Time             `json:"member_since"`
	Name        string                `json:"name"`
	Role        OrgWithMembershipRole `json:"role"`
	Slug        string                `json:"slug"`
	UpdatedAt   time.Time             `json:"updated_at"`
}

// OrgWithMembershipRole defines model for OrgWithMembership.Role.
type OrgWithMembershipRole string

// OrgsListResponse defines model for OrgsListResponse.
type OrgsListResponse struct {
	Organizations []OrgWithMembership `json:"organizations"`
}

// OwnerNamespace Resolved namespace at write time. CLI uses this to detect out-of-band transfers. Key absent when owner is unchanged.
type OwnerNamespace struct {
	Kind OwnerNamespaceKind `json:"kind"`
	Slug string             `json:"slug"`
}

// OwnerNamespaceKind defines model for OwnerNamespace.Kind.
type OwnerNamespaceKind string

// Profile defines model for Profile.
type Profile struct {
	// CliLoggedInAt First time the user generated a CLI session token. Write-once.
	CliLoggedInAt *time.Time         `json:"cli_logged_in_at"`
	CreatedAt     time.Time          `json:"created_at"`
	DisplayName   *string            `json:"display_name"`
	Id            openapi_types.UUID `json:"id"`

	// McpConnectedAt First time the user made an authenticated MCP request. Write-once.
	McpConnectedAt *time.Time `json:"mcp_connected_at"`

	// Role Global role. Distinct from per-org membership role. CHECK constraint on profiles.role pins the values.
	Role      ProfileRole `json:"role"`
	UpdatedAt time.Time   `json:"updated_at"`
	Username  string      `json:"username"`
}

// ProfileRole Global role. Distinct from per-org membership role. CHECK constraint on profiles.role pins the values.
type ProfileRole string

// PublicSkill defines model for PublicSkill.
type PublicSkill struct {
	CreatedAt   time.Time          `json:"created_at"`
	Description *string            `json:"description"`
	Id          openapi_types.UUID `json:"id"`
	Name        string             `json:"name"`

	// Slug Namespaced as `<owner-username>/<slug>`.
	Slug        string    `json:"slug"`
	ToolFormats []string  `json:"tool_formats"`
	UpdatedAt   time.Time `json:"updated_at"`
	Version     string    `json:"version"`
}

// PublicSkillsListResponse defines model for PublicSkillsListResponse.
type PublicSkillsListResponse struct {
	Skills []PublicSkill `json:"skills"`
}

// RefResolveResponse defines model for RefResolveResponse.
type RefResolveResponse struct {
	Results []RefResolveResult `json:"results"`
}

// RefResolveResult defines model for RefResolveResult.
type RefResolveResult struct {
	NewSlug *string                `json:"new_slug,omitempty"`
	Ref     string                 `json:"ref"`
	Status  RefResolveResultStatus `json:"status"`
}

// RefResolveResultStatus defines model for RefResolveResult.Status.
type RefResolveResultStatus string

// RefreshTokenRequest defines model for RefreshTokenRequest.
type RefreshTokenRequest struct {
	RefreshToken string `json:"refresh_token"`
}

// ResolveTransferredResponse defines model for ResolveTransferredResponse.
type ResolveTransferredResponse struct {
	Error ResolveTransferredResponseError `json:"error"`

	// MovedTo Present only when the caller has RLS access to the transferred destination.
	MovedTo *struct {
		Kind    ResolveTransferredResponseMovedToKind `json:"kind"`
		SkillId openapi_types.UUID                    `json:"skill_id"`

		// SkillSlug Destination skill slug.
		SkillSlug string `json:"skill_slug"`

		// Slug Destination owner username or org slug.
		Slug string `json:"slug"`
	} `json:"moved_to,omitempty"`
}

// ResolveTransferredResponseError defines model for ResolveTransferredResponse.Error.
type ResolveTransferredResponseError string

// ResolveTransferredResponseMovedToKind defines model for ResolveTransferredResponse.MovedTo.Kind.
type ResolveTransferredResponseMovedToKind string

// ResolvedBundleResponse defines model for ResolvedBundleResponse.
type ResolvedBundleResponse struct {
	// BundleSkills Joined skill rows; deprecated — bundles are being phased out for skillsets.
	BundleSkills []struct {
		SkillId openapi_types.UUID `json:"skill_id"`
		Skills  Skill              `json:"skills"`
	} `json:"bundle_skills"`
	Description *string                          `json:"description"`
	Id          openapi_types.UUID               `json:"id"`
	Name        string                           `json:"name"`
	Slug        string                           `json:"slug"`
	Type        ResolvedBundleResponseType       `json:"type"`
	Visibility  ResolvedBundleResponseVisibility `json:"visibility"`
}

// ResolvedBundleResponseType defines model for ResolvedBundleResponse.Type.
type ResolvedBundleResponseType string

// ResolvedBundleResponseVisibility defines model for ResolvedBundleResponse.Visibility.
type ResolvedBundleResponseVisibility string

// ResolvedSkillResponse defines model for ResolvedSkillResponse.
type ResolvedSkillResponse struct {
	ArchiveSize *int `json:"archive_size"`

	// ContentHash Merkle hash of the skill's file set. null until first push.
	ContentHash *string   `json:"content_hash"`
	CreatedAt   time.Time `json:"created_at"`

	// CurrentOwner Resolved namespace at write time. CLI uses this to detect out-of-band transfers. Key absent when owner is unchanged.
	CurrentOwner OwnerNamespace `json:"current_owner"`

	// DeletedAt Soft-delete timestamp. null on live skills; set on the deleted-skills view.
	DeletedAt *time.Time `json:"deleted_at"`

	// DeletionReason Why the skill was soft-deleted (e.g. 'user_deleted', 'transferred'). null on live skills.
	DeletionReason *string `json:"deletion_reason"`

	// DependencyCount Number of resolved dependency rows.
	DependencyCount int                 `json:"dependency_count"`
	Description     *string             `json:"description"`
	ForkedFrom      *openapi_types.UUID `json:"forked_from"`
	HeadCommitId    *openapi_types.UUID `json:"head_commit_id"`
	Id              openapi_types.UUID  `json:"id"`
	Name            string              `json:"name"`
	OrgId           *openapi_types.UUID `json:"org_id"`

	// OwnerId null on org-owned skills (XOR with org_id).
	OwnerId           *openapi_types.UUID `json:"owner_id"`
	PinnedArchivePath *string             `json:"pinned_archive_path"`
	Slug              string              `json:"slug"`

	// ToolFormats e.g. ['claude-code']
	ToolFormats []string                  `json:"tool_formats"`
	Type        ResolvedSkillResponseType `json:"type"`
	UpdatedAt   time.Time                 `json:"updated_at"`

	// UpstreamContentHash Live content_hash of the parent skill (forks only). null when no parent or unreadable.
	UpstreamContentHash *string `json:"upstream_content_hash"`

	// Version Semver-ish label — not authoritative; use content_hash.
	Version    string                          `json:"version"`
	Visibility ResolvedSkillResponseVisibility `json:"visibility"`
}

// ResolvedSkillResponseType defines model for ResolvedSkillResponse.Type.
type ResolvedSkillResponseType string

// ResolvedSkillResponseVisibility defines model for ResolvedSkillResponse.Visibility.
type ResolvedSkillResponseVisibility string

// ShareRecord defines model for ShareRecord.
type ShareRecord struct {
	CreatedAt       time.Time           `json:"created_at"`
	Id              openapi_types.UUID  `json:"id"`
	SharedBy        openapi_types.UUID  `json:"shared_by"`
	SharedWithEmail openapi_types.Email `json:"shared_with_email"`
	SkillId         openapi_types.UUID  `json:"skill_id"`
}

// ShareRevokedResponse defines model for ShareRevokedResponse.
type ShareRevokedResponse struct {
	Status ShareRevokedResponseStatus `json:"status"`
}

// ShareRevokedResponseStatus defines model for ShareRevokedResponse.Status.
type ShareRevokedResponseStatus string

// Skill defines model for Skill.
type Skill struct {
	ArchiveSize *int `json:"archive_size"`

	// ContentHash Merkle hash of the skill's file set. null until first push.
	ContentHash *string   `json:"content_hash"`
	CreatedAt   time.Time `json:"created_at"`

	// DeletedAt Soft-delete timestamp. null on live skills; set on the deleted-skills view.
	DeletedAt *time.Time `json:"deleted_at"`

	// DeletionReason Why the skill was soft-deleted (e.g. 'user_deleted', 'transferred'). null on live skills.
	DeletionReason *string `json:"deletion_reason"`

	// DependencyCount Number of resolved dependency rows.
	DependencyCount int                 `json:"dependency_count"`
	Description     *string             `json:"description"`
	ForkedFrom      *openapi_types.UUID `json:"forked_from"`
	HeadCommitId    *openapi_types.UUID `json:"head_commit_id"`
	Id              openapi_types.UUID  `json:"id"`
	Name            string              `json:"name"`
	OrgId           *openapi_types.UUID `json:"org_id"`

	// OwnerId null on org-owned skills (XOR with org_id).
	OwnerId           *openapi_types.UUID `json:"owner_id"`
	PinnedArchivePath *string             `json:"pinned_archive_path"`
	Slug              string              `json:"slug"`

	// ToolFormats e.g. ['claude-code']
	ToolFormats []string  `json:"tool_formats"`
	UpdatedAt   time.Time `json:"updated_at"`

	// UpstreamContentHash Live content_hash of the parent skill (forks only). null when no parent or unreadable.
	UpstreamContentHash *string `json:"upstream_content_hash"`

	// Version Semver-ish label — not authoritative; use content_hash.
	Version    string          `json:"version"`
	Visibility SkillVisibility `json:"visibility"`
}

// SkillVisibility defines model for Skill.Visibility.
type SkillVisibility string

// SkillCommit defines model for SkillCommit.
type SkillCommit struct {
	ArchivePath *string              `json:"archive_path"`
	ContentHash string               `json:"content_hash"`
	CreatedAt   time.Time            `json:"created_at"`
	Id          openapi_types.UUID   `json:"id"`
	Message     *string              `json:"message"`
	ParentIds   []openapi_types.UUID `json:"parent_ids"`
	PushedBy    *openapi_types.UUID  `json:"pushed_by"`
}

// SkillCommitsListResponse defines model for SkillCommitsListResponse.
type SkillCommitsListResponse struct {
	Versions []SkillCommit `json:"versions"`
}

// SkillDependencyEdge defines model for SkillDependencyEdge.
type SkillDependencyEdge struct {
	Id         *openapi_types.UUID            `json:"id"`
	Name       *string                        `json:"name"`
	Slug       string                         `json:"slug"`
	Visibility *SkillDependencyEdgeVisibility `json:"visibility"`
}

// SkillDependencyEdgeVisibility defines model for SkillDependencyEdge.Visibility.
type SkillDependencyEdgeVisibility string

// SkillDetail defines model for SkillDetail.
type SkillDetail struct {
	ArchiveSize *int `json:"archive_size"`

	// ContentHash Merkle hash of the skill's file set. null until first push.
	ContentHash *string   `json:"content_hash"`
	CreatedAt   time.Time `json:"created_at"`

	// DeletedAt Soft-delete timestamp. null on live skills; set on the deleted-skills view.
	DeletedAt *time.Time `json:"deleted_at"`

	// DeletionReason Why the skill was soft-deleted (e.g. 'user_deleted', 'transferred'). null on live skills.
	DeletionReason *string               `json:"deletion_reason"`
	Dependencies   []SkillDependencyEdge `json:"dependencies"`

	// DependencyCount Number of resolved dependency rows.
	DependencyCount int                 `json:"dependency_count"`
	Description     *string             `json:"description"`
	Files           []SkillFile         `json:"files"`
	ForkedFrom      *openapi_types.UUID `json:"forked_from"`
	HeadCommitId    *openapi_types.UUID `json:"head_commit_id"`
	Id              openapi_types.UUID  `json:"id"`
	Name            string              `json:"name"`

	// Org Joined from orgs. null on personally-owned skills.
	Org *struct {
		Name string `json:"name"`
		Slug string `json:"slug"`
	} `json:"org"`
	OrgId *openapi_types.UUID `json:"org_id"`

	// Owner Joined from profiles. null on org-owned skills.
	Owner *struct {
		Username string `json:"username"`
	} `json:"owner"`

	// OwnerId null on org-owned skills (XOR with org_id).
	OwnerId           *openapi_types.UUID `json:"owner_id"`
	PinnedArchivePath *string             `json:"pinned_archive_path"`
	Slug              string              `json:"slug"`

	// ToolFormats e.g. ['claude-code']
	ToolFormats []string  `json:"tool_formats"`
	UpdatedAt   time.Time `json:"updated_at"`

	// UpstreamContentHash Live content_hash of the parent skill (forks only). null when no parent or unreadable.
	UpstreamContentHash *string `json:"upstream_content_hash"`

	// Version Semver-ish label — not authoritative; use content_hash.
	Version    string                `json:"version"`
	Visibility SkillDetailVisibility `json:"visibility"`
}

// SkillDetailVisibility defines model for SkillDetail.Visibility.
type SkillDetailVisibility string

// SkillFile defines model for SkillFile.
type SkillFile struct {
	Path string `json:"path"`
	Size int    `json:"size"`
}

// SkillsListResponse defines model for SkillsListResponse.
type SkillsListResponse struct {
	Skills []Skill `json:"skills"`

	// Skillset Present when the caller uses effective skillset mode (no scope parameter).
	Skillset *struct {
		Name string `json:"name"`
		Slug string `json:"slug"`
	} `json:"skillset,omitempty"`
}

// Skillset defines model for Skillset.
type Skillset struct {
	AutoAbsorbNewSkills bool                `json:"auto_absorb_new_skills"`
	CreatedAt           time.Time           `json:"created_at"`
	Description         *string             `json:"description"`
	Id                  openapi_types.UUID  `json:"id"`
	IsDefault           bool                `json:"is_default"`
	Name                string              `json:"name"`
	OwnerOrgId          *openapi_types.UUID `json:"owner_org_id"`
	OwnerUserId         *openapi_types.UUID `json:"owner_user_id"`
	Slug                string              `json:"slug"`
	UpdatedAt           time.Time           `json:"updated_at"`
}

// SkillsetListItem defines model for SkillsetListItem.
type SkillsetListItem struct {
	AutoAbsorbNewSkills bool                `json:"auto_absorb_new_skills"`
	CreatedAt           time.Time           `json:"created_at"`
	Description         *string             `json:"description"`
	Id                  openapi_types.UUID  `json:"id"`
	IsDefault           bool                `json:"is_default"`
	Name                string              `json:"name"`
	OwnerOrgId          *openapi_types.UUID `json:"owner_org_id"`
	OwnerUserId         *openapi_types.UUID `json:"owner_user_id"`

	// SkillCount Number of skills currently in the skillset.
	SkillCount int       `json:"skill_count"`
	Slug       string    `json:"slug"`
	UpdatedAt  time.Time `json:"updated_at"`
}

// SkillsetMembershipItem defines model for SkillsetMembershipItem.
type SkillsetMembershipItem struct {
	Id        openapi_types.UUID `json:"id"`
	IsDefault bool               `json:"is_default"`
	Name      string             `json:"name"`
	Slug      string             `json:"slug"`
}

// SkillsetWithSkills defines model for SkillsetWithSkills.
type SkillsetWithSkills struct {
	AutoAbsorbNewSkills bool                `json:"auto_absorb_new_skills"`
	CreatedAt           time.Time           `json:"created_at"`
	Description         *string             `json:"description"`
	Id                  openapi_types.UUID  `json:"id"`
	IsDefault           bool                `json:"is_default"`
	Name                string              `json:"name"`
	OwnerOrgId          *openapi_types.UUID `json:"owner_org_id"`
	OwnerUserId         *openapi_types.UUID `json:"owner_user_id"`

	// Skills Resolved skill rows currently in the skillset (minimal projection).
	Skills []struct {
		Description *string             `json:"description"`
		Id          openapi_types.UUID  `json:"id"`
		Name        string              `json:"name"`
		OrgId       *openapi_types.UUID `json:"org_id"`
		OwnerId     *openapi_types.UUID `json:"owner_id"`
		Slug        string              `json:"slug"`
	} `json:"skills"`
	Slug      string    `json:"slug"`
	UpdatedAt time.Time `json:"updated_at"`
}

// Suggestion defines model for Suggestion.
type Suggestion struct {
	BaseContentHash  string             `json:"base_content_hash"`
	CreatedAt        time.Time          `json:"created_at"`
	Id               openapi_types.UUID `json:"id"`
	Message          *string            `json:"message"`
	OwnerId          openapi_types.UUID `json:"owner_id"`
	OwnerSkillId     openapi_types.UUID `json:"owner_skill_id"`
	ResponseMessage  *string            `json:"response_message"`
	ReviewedAt       *time.Time         `json:"reviewed_at"`
	Status           SuggestionStatus   `json:"status"`
	SuggesterId      openapi_types.UUID `json:"suggester_id"`
	SuggesterSkillId openapi_types.UUID `json:"suggester_skill_id"`
	UpdatedAt        time.Time          `json:"updated_at"`
}

// SuggestionStatus defines model for Suggestion.Status.
type SuggestionStatus string

// SuggestionsCountResponse defines model for SuggestionsCountResponse.
type SuggestionsCountResponse struct {
	Count int `json:"count"`
}

// SuggestionsListResponse defines model for SuggestionsListResponse.
type SuggestionsListResponse struct {
	Suggestions []EnrichedSuggestion `json:"suggestions"`
}

// SyncResponse defines model for SyncResponse.
type SyncResponse struct {
	// Since Echo of the `since` query parameter (ISO timestamp).
	Since    time.Time   `json:"since"`
	Skills   []SyncSkill `json:"skills"`
	Skillset struct {
		Name string `json:"name"`
		Slug string `json:"slug"`
	} `json:"skillset"`
	UpdatedCount int `json:"updated_count"`
}

// SyncSkill defines model for SyncSkill.
type SyncSkill struct {
	ContentHash  *string             `json:"content_hash"`
	HeadCommitId *openapi_types.UUID `json:"head_commit_id"`
	Id           openapi_types.UUID  `json:"id"`
	Name         string              `json:"name"`
	Slug         string              `json:"slug"`
	UpdatedAt    time.Time           `json:"updated_at"`
	Version      string              `json:"version"`
}

// TokenPair defines model for TokenPair.
type TokenPair struct {
	AccessToken string `json:"access_token"`

	// ExpiresAt Unix seconds.
	ExpiresAt    int    `json:"expires_at"`
	RefreshToken string `json:"refresh_token"`
}

// UpdateSkillResponse defines model for UpdateSkillResponse.
type UpdateSkillResponse struct {
	ArchiveSize *int `json:"archive_size"`

	// ContentHash Merkle hash of the skill's file set. null until first push.
	ContentHash *string   `json:"content_hash"`
	CreatedAt   time.Time `json:"created_at"`

	// DeletedAt Soft-delete timestamp. null on live skills; set on the deleted-skills view.
	DeletedAt *time.Time `json:"deleted_at"`

	// DeletionReason Why the skill was soft-deleted (e.g. 'user_deleted', 'transferred'). null on live skills.
	DeletionReason *string `json:"deletion_reason"`

	// DependencyCount Number of resolved dependency rows.
	DependencyCount int                 `json:"dependency_count"`
	Description     *string             `json:"description"`
	ForkedFrom      *openapi_types.UUID `json:"forked_from"`
	HeadCommitId    *openapi_types.UUID `json:"head_commit_id"`
	Id              openapi_types.UUID  `json:"id"`
	Name            string              `json:"name"`
	OrgId           *openapi_types.UUID `json:"org_id"`

	// OwnerId null on org-owned skills (XOR with org_id).
	OwnerId           *openapi_types.UUID `json:"owner_id"`
	PinnedArchivePath *string             `json:"pinned_archive_path"`

	// PrivateDependencies Returned when changing visibility to public WITHOUT make_deps_public:true and private dependencies exist. The skill is still updated; the caller decides whether to make them public.
	PrivateDependencies *[]struct {
		Id   openapi_types.UUID `json:"id"`
		Name string             `json:"name"`
		Slug string             `json:"slug"`
	} `json:"private_dependencies,omitempty"`
	Slug string `json:"slug"`

	// ToolFormats e.g. ['claude-code']
	ToolFormats []string  `json:"tool_formats"`
	UpdatedAt   time.Time `json:"updated_at"`

	// UpstreamContentHash Live content_hash of the parent skill (forks only). null when no parent or unreadable.
	UpstreamContentHash *string `json:"upstream_content_hash"`

	// Version Semver-ish label — not authoritative; use content_hash.
	Version    string                        `json:"version"`
	Visibility UpdateSkillResponseVisibility `json:"visibility"`
}

// UpdateSkillResponseVisibility defines model for UpdateSkillResponse.Visibility.
type UpdateSkillResponseVisibility string

// bearerAuthContextKey is the context key for bearerAuth security scheme
type bearerAuthContextKey string

// PatchApiV1MeJSONBody defines parameters for PatchApiV1Me.
type PatchApiV1MeJSONBody struct {
	DisplayName *string `json:"display_name,omitempty"`
	Username    *string `json:"username,omitempty"`
}

// GetApiV1OrganizationParams defines parameters for GetApiV1Organization.
type GetApiV1OrganizationParams struct {
	Slug *string             `form:"slug,omitempty" json:"slug,omitempty"`
	Id   *openapi_types.UUID `form:"id,omitempty" json:"id,omitempty"`
}

// PostApiV1OrganizationJSONBody defines parameters for PostApiV1Organization.
type PostApiV1OrganizationJSONBody struct {
	Domain *string `json:"domain,omitempty"`
	Name   string  `json:"name"`
	Slug   string  `json:"slug"`
}

// PostApiV1OrganizationInviteJSONBody defines parameters for PostApiV1OrganizationInvite.
type PostApiV1OrganizationInviteJSONBody struct {
	Email openapi_types.Email                      `json:"email"`
	Role  *PostApiV1OrganizationInviteJSONBodyRole `json:"role,omitempty"`
}

// PostApiV1OrganizationInviteJSONBodyRole defines parameters for PostApiV1OrganizationInvite.
type PostApiV1OrganizationInviteJSONBodyRole string

// GetApiV1OrganizationMembersParams defines parameters for GetApiV1OrganizationMembers.
type GetApiV1OrganizationMembersParams struct {
	Slug *string `form:"slug,omitempty" json:"slug,omitempty"`
}

// GetApiV1OrganizationMembersUserIdSkillsetsParams defines parameters for GetApiV1OrganizationMembersUserIdSkillsets.
type GetApiV1OrganizationMembersUserIdSkillsetsParams struct {
	Org *string `form:"org,omitempty" json:"org,omitempty"`
}

// PutApiV1OrganizationMembersUserIdSkillsetsJSONBody defines parameters for PutApiV1OrganizationMembersUserIdSkillsets.
type PutApiV1OrganizationMembersUserIdSkillsetsJSONBody struct {
	SkillsetIds []openapi_types.UUID `json:"skillset_ids"`
}

// PutApiV1OrganizationMembersUserIdSkillsetsParams defines parameters for PutApiV1OrganizationMembersUserIdSkillsets.
type PutApiV1OrganizationMembersUserIdSkillsetsParams struct {
	Org *string `form:"org,omitempty" json:"org,omitempty"`
}

// DeleteApiV1OrganizationSlugJSONBody defines parameters for DeleteApiV1OrganizationSlug.
type DeleteApiV1OrganizationSlugJSONBody struct {
	ConfirmSlug string `json:"confirm_slug"`
}

// PatchApiV1OrganizationSlugJSONBody defines parameters for PatchApiV1OrganizationSlug.
type PatchApiV1OrganizationSlugJSONBody struct {
	Domain *string `json:"domain,omitempty"`
	Name   *string `json:"name,omitempty"`
	Slug   *string `json:"slug,omitempty"`
}

// GetApiV1PublicSkillsParams defines parameters for GetApiV1PublicSkills.
type GetApiV1PublicSkillsParams struct {
	// Q Search term over name/description (ILIKE).
	Q *string `form:"q,omitempty" json:"q,omitempty"`

	// Limit Max results. Default 50, hard cap 200.
	Limit *int `form:"limit,omitempty" json:"limit,omitempty"`
}

// GetApiV1RefsResolveParams defines parameters for GetApiV1RefsResolve.
type GetApiV1RefsResolveParams struct {
	// Skill Skill UUID whose namespace the refs are classified against.
	Skill openapi_types.UUID `form:"skill" json:"skill"`

	// Refs Comma-separated list of slug refs (max 50).
	Refs string `form:"refs" json:"refs"`
}

// GetApiV1ResolveUsernameSlug200JSONResponseBody defines parameters for GetApiV1ResolveUsernameSlug.
type GetApiV1ResolveUsernameSlug200JSONResponseBody struct {
	union json.RawMessage
}

// GetApiV1SkillsParams defines parameters for GetApiV1Skills.
type GetApiV1SkillsParams struct {
	// Scope `personal` filters to caller-owned skills; `org` to skills in any of the caller's orgs. Default: all accessible.
	Scope *GetApiV1SkillsParamsScope `form:"scope,omitempty" json:"scope,omitempty"`

	// Skillset Filter to the effective skill set for this personal skillset slug. Must not be combined with scope.
	Skillset *string `form:"skillset,omitempty" json:"skillset,omitempty"`

	// Deleted `true` returns the caller's recently-deleted skills (personal namespace only).
	Deleted *GetApiV1SkillsParamsDeleted `form:"deleted,omitempty" json:"deleted,omitempty"`
}

// GetApiV1SkillsParamsScope defines parameters for GetApiV1Skills.
type GetApiV1SkillsParamsScope string

// GetApiV1SkillsParamsDeleted defines parameters for GetApiV1Skills.
type GetApiV1SkillsParamsDeleted string

// PostApiV1SkillsJSONBody defines parameters for PostApiV1Skills.
type PostApiV1SkillsJSONBody struct {
	Content     *string                            `json:"content,omitempty"`
	Description *string                            `json:"description,omitempty"`
	ForkedFrom  *openapi_types.UUID                `json:"forked_from,omitempty"`
	GithubSkill *string                            `json:"github_skill,omitempty"`
	GithubUrl   *string                            `json:"github_url,omitempty"`
	Name        string                             `json:"name"`
	OrgId       *openapi_types.UUID                `json:"org_id,omitempty"`
	ToolFormats *[]string                          `json:"tool_formats,omitempty"`
	Version     *string                            `json:"version,omitempty"`
	Visibility  *PostApiV1SkillsJSONBodyVisibility `json:"visibility,omitempty"`
}

// PostApiV1SkillsJSONBodyVisibility defines parameters for PostApiV1Skills.
type PostApiV1SkillsJSONBodyVisibility string

// PutApiV1SkillsIdJSONBody defines parameters for PutApiV1SkillsId.
type PutApiV1SkillsIdJSONBody struct {
	// ConfirmPublic Required when changing visibility to 'public'. The server returns 400 without it.
	ConfirmPublic *bool   `json:"confirm_public,omitempty"`
	Description   *string `json:"description,omitempty"`

	// MakeDepsPublic When making a skill public, also publicise any private dependencies in one atomic update.
	MakeDepsPublic *bool   `json:"make_deps_public,omitempty"`
	Name           *string `json:"name,omitempty"`

	// PullUpstream If true, advance this fork's pin to the parent's latest version. All other fields ignored.
	PullUpstream *bool                               `json:"pull_upstream,omitempty"`
	Visibility   *PutApiV1SkillsIdJSONBodyVisibility `json:"visibility,omitempty"`
}

// PutApiV1SkillsIdJSONBodyVisibility defines parameters for PutApiV1SkillsId.
type PutApiV1SkillsIdJSONBodyVisibility string

// GetApiV1SkillsIdArchiveParams defines parameters for GetApiV1SkillsIdArchive.
type GetApiV1SkillsIdArchiveParams struct {
	// Commit Pin to a specific commit's archive instead of live HEAD.
	Commit *openapi_types.UUID `form:"commit,omitempty" json:"commit,omitempty"`
}

// PutApiV1SkillsIdArchiveParams defines parameters for PutApiV1SkillsIdArchive.
type PutApiV1SkillsIdArchiveParams struct {
	// XExpectedCommit Commit ID the client believes is HEAD. Preferred over X-Expected-Hash.
	XExpectedCommit *openapi_types.UUID `json:"X-Expected-Commit,omitempty"`

	// XExpectedHash Merkle content hash fallback when the client doesn't track commit IDs. The server skips this check when the skill has never been pushed (content_hash is null).
	XExpectedHash *string `json:"X-Expected-Hash,omitempty"`

	// XContentHash Client-computed Merkle hash of the upload. Server cross-checks.
	XContentHash   *string `json:"X-Content-Hash,omitempty"`
	XCommitMessage *string `json:"X-Commit-Message,omitempty"`

	// XName New display name applied alongside the push. For org-owned skills this must equal the (org-prefixed) slug.
	XName        *string                                   `json:"X-Name,omitempty"`
	XDescription *string                                   `json:"X-Description,omitempty"`
	XVisibility  *PutApiV1SkillsIdArchiveParamsXVisibility `json:"X-Visibility,omitempty"`
}

// PutApiV1SkillsIdArchiveParamsXVisibility defines parameters for PutApiV1SkillsIdArchive.
type PutApiV1SkillsIdArchiveParamsXVisibility string

// PostApiV1SkillsIdRestoreJSONBody defines parameters for PostApiV1SkillsIdRestore.
type PostApiV1SkillsIdRestoreJSONBody struct {
	Slug *string `json:"slug,omitempty"`
}

// DeleteApiV1SkillsIdShareParams defines parameters for DeleteApiV1SkillsIdShare.
type DeleteApiV1SkillsIdShareParams struct {
	// Email Email address whose share to revoke.
	Email openapi_types.Email `form:"email" json:"email"`
}

// PostApiV1SkillsIdShareJSONBody defines parameters for PostApiV1SkillsIdShare.
type PostApiV1SkillsIdShareJSONBody struct {
	Email openapi_types.Email `json:"email"`
}

// PostApiV1SkillsIdTransferJSONBody defines parameters for PostApiV1SkillsIdTransfer.
type PostApiV1SkillsIdTransferJSONBody struct {
	Slug *string `json:"slug,omitempty"`
	To   struct {
		Id   openapi_types.UUID                      `json:"id"`
		Kind PostApiV1SkillsIdTransferJSONBodyToKind `json:"kind"`
	} `json:"to"`
}

// PostApiV1SkillsIdTransferJSONBodyToKind defines parameters for PostApiV1SkillsIdTransfer.
type PostApiV1SkillsIdTransferJSONBodyToKind string

// PostApiV1SkillsIdVersionsJSONBody defines parameters for PostApiV1SkillsIdVersions.
type PostApiV1SkillsIdVersionsJSONBody struct {
	CommitId  *openapi_types.UUID `json:"commit_id,omitempty"`
	VersionId *openapi_types.UUID `json:"version_id,omitempty"`
}

// PostApiV1SkillsetsJSONBody defines parameters for PostApiV1Skillsets.
type PostApiV1SkillsetsJSONBody struct {
	AutoAbsorb  *bool   `json:"auto_absorb,omitempty"`
	Description *string `json:"description,omitempty"`
	Name        string  `json:"name"`
	SetDefault  *bool   `json:"set_default,omitempty"`
	Slug        *string `json:"slug,omitempty"`
}

// PostApiV1SkillsetsOwnerJSONBody defines parameters for PostApiV1SkillsetsOwner.
type PostApiV1SkillsetsOwnerJSONBody struct {
	AutoAbsorb  *bool   `json:"auto_absorb,omitempty"`
	Description *string `json:"description,omitempty"`
	Name        string  `json:"name"`
	SetDefault  *bool   `json:"set_default,omitempty"`
	Slug        *string `json:"slug,omitempty"`
}

// PatchApiV1SkillsetsOwnerSlugJSONBody defines parameters for PatchApiV1SkillsetsOwnerSlug.
type PatchApiV1SkillsetsOwnerSlugJSONBody struct {
	AutoAbsorbNewSkills *bool   `json:"auto_absorb_new_skills,omitempty"`
	Description         *string `json:"description,omitempty"`
	Name                *string `json:"name,omitempty"`
	SetDefault          *bool   `json:"set_default,omitempty"`
	Slug                *string `json:"slug,omitempty"`
}

// GetApiV1SuggestionsParams defines parameters for GetApiV1Suggestions.
type GetApiV1SuggestionsParams struct {
	// Role Filter to suggestions where the caller is the named party. Default: both.
	Role *GetApiV1SuggestionsParamsRole `form:"role,omitempty" json:"role,omitempty"`

	// Status Filter by lifecycle state.
	Status *GetApiV1SuggestionsParamsStatus `form:"status,omitempty" json:"status,omitempty"`

	// SkillId Narrow to suggestions targeting a specific skill (owner_skill_id).
	SkillId *openapi_types.UUID `form:"skill_id,omitempty" json:"skill_id,omitempty"`

	// Count DEPRECATED — kept for one CLI release. Returns {count} instead of the list. Prefer GET /api/v1/suggestions/count, which has a clean response type for codegen.
	Count *GetApiV1SuggestionsParamsCount `form:"count,omitempty" json:"count,omitempty"`
}

// GetApiV1SuggestionsParamsRole defines parameters for GetApiV1Suggestions.
type GetApiV1SuggestionsParamsRole string

// GetApiV1SuggestionsParamsStatus defines parameters for GetApiV1Suggestions.
type GetApiV1SuggestionsParamsStatus string

// GetApiV1SuggestionsParamsCount defines parameters for GetApiV1Suggestions.
type GetApiV1SuggestionsParamsCount string

// PostApiV1SuggestionsJSONBody defines parameters for PostApiV1Suggestions.
type PostApiV1SuggestionsJSONBody struct {
	BaseContentHash  string             `json:"base_content_hash"`
	Message          *string            `json:"message,omitempty"`
	OwnerSkillId     openapi_types.UUID `json:"owner_skill_id"`
	SuggesterSkillId openapi_types.UUID `json:"suggester_skill_id"`
}

// GetApiV1SuggestionsCountParams defines parameters for GetApiV1SuggestionsCount.
type GetApiV1SuggestionsCountParams struct {
	// Role Filter to suggestions where the caller is the named party. Default: both.
	Role *GetApiV1SuggestionsCountParamsRole `form:"role,omitempty" json:"role,omitempty"`

	// Status Filter by lifecycle state.
	Status *GetApiV1SuggestionsCountParamsStatus `form:"status,omitempty" json:"status,omitempty"`

	// SkillId Narrow to suggestions targeting a specific skill (owner_skill_id).
	SkillId *openapi_types.UUID `form:"skill_id,omitempty" json:"skill_id,omitempty"`
}

// GetApiV1SuggestionsCountParamsRole defines parameters for GetApiV1SuggestionsCount.
type GetApiV1SuggestionsCountParamsRole string

// GetApiV1SuggestionsCountParamsStatus defines parameters for GetApiV1SuggestionsCount.
type GetApiV1SuggestionsCountParamsStatus string

// PutApiV1SuggestionsIdJSONBody defines parameters for PutApiV1SuggestionsId.
type PutApiV1SuggestionsIdJSONBody struct {
	ResponseMessage *string                              `json:"response_message,omitempty"`
	Status          *PutApiV1SuggestionsIdJSONBodyStatus `json:"status,omitempty"`
}

// PutApiV1SuggestionsIdJSONBodyStatus defines parameters for PutApiV1SuggestionsId.
type PutApiV1SuggestionsIdJSONBodyStatus string

// GetApiV1SyncParams defines parameters for GetApiV1Sync.
type GetApiV1SyncParams struct {
	// Since ISO timestamp — only skills updated after this are returned. Required.
	Since time.Time `form:"since" json:"since"`

	// Skillset Skillset slug to scope the query. Defaults to the caller's default skillset.
	Skillset *string `form:"skillset,omitempty" json:"skillset,omitempty"`
}

// PostApiV1AuthRefreshJSONRequestBody defines body for PostApiV1AuthRefresh for application/json ContentType.
type PostApiV1AuthRefreshJSONRequestBody = RefreshTokenRequest

// PatchApiV1MeJSONRequestBody defines body for PatchApiV1Me for application/json ContentType.
type PatchApiV1MeJSONRequestBody PatchApiV1MeJSONBody

// PostApiV1OrganizationJSONRequestBody defines body for PostApiV1Organization for application/json ContentType.
type PostApiV1OrganizationJSONRequestBody PostApiV1OrganizationJSONBody

// PostApiV1OrganizationInviteJSONRequestBody defines body for PostApiV1OrganizationInvite for application/json ContentType.
type PostApiV1OrganizationInviteJSONRequestBody PostApiV1OrganizationInviteJSONBody

// PutApiV1OrganizationMembersUserIdSkillsetsJSONRequestBody defines body for PutApiV1OrganizationMembersUserIdSkillsets for application/json ContentType.
type PutApiV1OrganizationMembersUserIdSkillsetsJSONRequestBody PutApiV1OrganizationMembersUserIdSkillsetsJSONBody

// DeleteApiV1OrganizationSlugJSONRequestBody defines body for DeleteApiV1OrganizationSlug for application/json ContentType.
type DeleteApiV1OrganizationSlugJSONRequestBody DeleteApiV1OrganizationSlugJSONBody

// PatchApiV1OrganizationSlugJSONRequestBody defines body for PatchApiV1OrganizationSlug for application/json ContentType.
type PatchApiV1OrganizationSlugJSONRequestBody PatchApiV1OrganizationSlugJSONBody

// PostApiV1SkillsJSONRequestBody defines body for PostApiV1Skills for application/json ContentType.
type PostApiV1SkillsJSONRequestBody PostApiV1SkillsJSONBody

// PutApiV1SkillsIdJSONRequestBody defines body for PutApiV1SkillsId for application/json ContentType.
type PutApiV1SkillsIdJSONRequestBody PutApiV1SkillsIdJSONBody

// PostApiV1SkillsIdRestoreJSONRequestBody defines body for PostApiV1SkillsIdRestore for application/json ContentType.
type PostApiV1SkillsIdRestoreJSONRequestBody PostApiV1SkillsIdRestoreJSONBody

// PostApiV1SkillsIdShareJSONRequestBody defines body for PostApiV1SkillsIdShare for application/json ContentType.
type PostApiV1SkillsIdShareJSONRequestBody PostApiV1SkillsIdShareJSONBody

// PostApiV1SkillsIdTransferJSONRequestBody defines body for PostApiV1SkillsIdTransfer for application/json ContentType.
type PostApiV1SkillsIdTransferJSONRequestBody PostApiV1SkillsIdTransferJSONBody

// PostApiV1SkillsIdVersionsJSONRequestBody defines body for PostApiV1SkillsIdVersions for application/json ContentType.
type PostApiV1SkillsIdVersionsJSONRequestBody PostApiV1SkillsIdVersionsJSONBody

// PostApiV1SkillsetsJSONRequestBody defines body for PostApiV1Skillsets for application/json ContentType.
type PostApiV1SkillsetsJSONRequestBody PostApiV1SkillsetsJSONBody

// PostApiV1SkillsetsOwnerJSONRequestBody defines body for PostApiV1SkillsetsOwner for application/json ContentType.
type PostApiV1SkillsetsOwnerJSONRequestBody PostApiV1SkillsetsOwnerJSONBody

// PatchApiV1SkillsetsOwnerSlugJSONRequestBody defines body for PatchApiV1SkillsetsOwnerSlug for application/json ContentType.
type PatchApiV1SkillsetsOwnerSlugJSONRequestBody PatchApiV1SkillsetsOwnerSlugJSONBody

// PostApiV1SuggestionsJSONRequestBody defines body for PostApiV1Suggestions for application/json ContentType.
type PostApiV1SuggestionsJSONRequestBody PostApiV1SuggestionsJSONBody

// PutApiV1SuggestionsIdJSONRequestBody defines body for PutApiV1SuggestionsId for application/json ContentType.
type PutApiV1SuggestionsIdJSONRequestBody PutApiV1SuggestionsIdJSONBody

// AsResolvedSkillResponse returns the union data inside the GetApiV1ResolveUsernameSlug200JSONResponseBody as a ResolvedSkillResponse
func (t GetApiV1ResolveUsernameSlug200JSONResponseBody) AsResolvedSkillResponse() (ResolvedSkillResponse, error) {
	var body ResolvedSkillResponse
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromResolvedSkillResponse overwrites any union data inside the GetApiV1ResolveUsernameSlug200JSONResponseBody as the provided ResolvedSkillResponse
func (t *GetApiV1ResolveUsernameSlug200JSONResponseBody) FromResolvedSkillResponse(v ResolvedSkillResponse) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeResolvedSkillResponse performs a merge with any union data inside the GetApiV1ResolveUsernameSlug200JSONResponseBody, using the provided ResolvedSkillResponse
func (t *GetApiV1ResolveUsernameSlug200JSONResponseBody) MergeResolvedSkillResponse(v ResolvedSkillResponse) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsResolvedBundleResponse returns the union data inside the GetApiV1ResolveUsernameSlug200JSONResponseBody as a ResolvedBundleResponse
func (t GetApiV1ResolveUsernameSlug200JSONResponseBody) AsResolvedBundleResponse() (ResolvedBundleResponse, error) {
	var body ResolvedBundleResponse
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromResolvedBundleResponse overwrites any union data inside the GetApiV1ResolveUsernameSlug200JSONResponseBody as the provided ResolvedBundleResponse
func (t *GetApiV1ResolveUsernameSlug200JSONResponseBody) FromResolvedBundleResponse(v ResolvedBundleResponse) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeResolvedBundleResponse performs a merge with any union data inside the GetApiV1ResolveUsernameSlug200JSONResponseBody, using the provided ResolvedBundleResponse
func (t *GetApiV1ResolveUsernameSlug200JSONResponseBody) MergeResolvedBundleResponse(v ResolvedBundleResponse) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

func (t GetApiV1ResolveUsernameSlug200JSONResponseBody) MarshalJSON() ([]byte, error) {
	b, err := t.union.MarshalJSON()
	return b, err
}

func (t *GetApiV1ResolveUsernameSlug200JSONResponseBody) UnmarshalJSON(b []byte) error {
	err := t.union.UnmarshalJSON(b)
	return err
}
