// Code generated by go-swagger; DO NOT EDIT.

package models

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"context"

	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/swag"
)

// HashicorpCloudResourcemanagerRole Role binds a name to a set of permissions.
//
// swagger:model hashicorp.cloud.resourcemanager.Role
type HashicorpCloudResourcemanagerRole struct {

	// Description provides information regarding the purpose of this role.
	Description string `json:"description,omitempty"`

	// ID is the globally unique identifier for this role.
	// Examples:
	// * roles/contributor
	// * organizations/30788e25-a942-470a-9a75-128cc7b97fde/roles/my-custom-role (custom role scoped to an organization)
	// * projects/30788e25-a942-470a-9a75-128cc7b97fde/roles/my-custom-project-role
	//
	// Builtin roles are prefixed with "roles/"
	ID string `json:"id,omitempty"`

	// LowestApplicableResourceTypes is a list of lowest applicable resource types that this role should be assigned to.
	// The parent resource types will be deduced by the Resource Manager.
	// The list should contain valid resource types in the format hashicorp.<service>.<resource>
	// Examples:
	// * hashicorp.resource-manager.project
	// * hashicorp.secrets.app
	LowestApplicableResourceTypes []string `json:"lowest_applicable_resource_types"`

	// Permissions is a set of allowed permissions in the format: <service>.<noun>.<action>
	// Examples:
	// * network.hvns.create
	// * network.hvns.read
	// * consul.clusters.create
	Permissions []string `json:"permissions"`

	// Title is a display name for this role.
	Title string `json:"title,omitempty"`

	// Version is the instance of this role - version is incremented when a
	// permission is added or removed and when other metadata is changed.
	Version int32 `json:"version,omitempty"`
}

// Validate validates this hashicorp cloud resourcemanager role
func (m *HashicorpCloudResourcemanagerRole) Validate(formats strfmt.Registry) error {
	return nil
}

// ContextValidate validates this hashicorp cloud resourcemanager role based on context it is used
func (m *HashicorpCloudResourcemanagerRole) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}

// MarshalBinary interface implementation
func (m *HashicorpCloudResourcemanagerRole) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *HashicorpCloudResourcemanagerRole) UnmarshalBinary(b []byte) error {
	var res HashicorpCloudResourcemanagerRole
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}
