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

// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed

package members_models

import (
	"context"

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

// Document A document ingested into SalesforceDevops.net
//
// swagger:model document
type Document struct {

	// Who can access this document?
	AccessControlList *string `json:"AccessControlList,omitempty"`

	// The author of the document
	Author *string `json:"Author,omitempty"`

	// Created By
	CreatedByID *string `json:"CreatedByID,omitempty"`

	// Created Date
	CreatedDate *string `json:"CreatedDate,omitempty"`

	// The date of the document
	DocumentDate *string `json:"DocumentDate,omitempty"`

	// The ID of the folder in which this document is stored
	FolderID *string `json:"FolderID,omitempty"`

	// Record Id
	ID string `json:"ID,omitempty"`

	// Alt text for the image
	ImageAltText *string `json:"ImageAltText,omitempty"`

	// Cover image for this document
	ImageURL *string `json:"ImageURL,omitempty"`

	// The language of the document
	Language *string `json:"Language,omitempty"`

	// Last Modified By
	LastModifiedByID *string `json:"LastModifiedByID,omitempty"`

	// Last Modifed Date
	LastModifiedDate *string `json:"LastModifiedDate,omitempty"`

	// Logo for this document
	Logo *string `json:"Logo,omitempty"`

	// The ID of the object who owns this document
	ObjectID *string `json:"ObjectID,omitempty"`

	// The type of object who owns this document
	ObjectType *string `json:"ObjectType,omitempty"`

	// Where did the document come from?
	Source *string `json:"Source,omitempty"`

	// Ingestion status of this document
	Status *string `json:"Status,omitempty"`

	// tenant ID
	TenantID *string `json:"TenantID,omitempty"`

	// Document Title
	Title *string `json:"Title,omitempty"`

	// Source URL for document ingestion
	URL *string `json:"URL,omitempty"`

	// The ID of the user who owns this document
	UserID *string `json:"UserID,omitempty"`

	// Version of the document
	Version *string `json:"Version,omitempty"`
}

// Validate validates this document
func (m *Document) Validate(formats strfmt.Registry) error {
	return nil
}

// ContextValidate validates this document based on context it is used
func (m *Document) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
	return nil
}

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

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