orcid

package
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Examples

Constants

View Source
const (
	MemberSandboxHost = "https://api.sandbox.orcid.org/v3.0"
	PublicSandboxHost = "https://pub.sandbox.orcid.org/v3.0"
	MemberHost        = "https://api.orcid.org/v3.0"
	PublicHost        = "https://pub.orcid.org/v3.0"
)
View Source
const (
	DefaultAPIURL     = PublicHost
	DefaultTimeout    = 30 * time.Second
	DefaultMaxRetries = 3
	DefaultRateLimit  = 10
)

Variables

This section is empty.

Functions

func FormatOrcidID

func FormatOrcidID(orcid string) string

func ParseOrcidID

func ParseOrcidID(input string) string

func ValidateOrcidID

func ValidateOrcidID(orcid string) error
Example
package main

import (
	"fmt"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	orcidIDs := []string{
		"0000-0002-1825-0097",
		"https://orcid.org/0000-0002-1825-0097",
		"0000-0000-0000-0000",
		"invalid-orcid",
	}

	for _, id := range orcidIDs {
		err := orcid.ValidateOrcidID(id)
		if err != nil {
			fmt.Printf("%s: Invalid - %v\n", id, err)
		} else {
			fmt.Printf("%s: Valid\n", id)
		}
	}
}

Types

type ActivitiesSummary

type ActivitiesSummary struct {
	LastModifiedDate  *Date              `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Distinctions      *Distinctions      `json:"distinctions,omitempty" xml:"distinctions,omitempty"`
	Educations        *Educations        `json:"educations,omitempty" xml:"educations,omitempty"`
	Employments       *Employments       `json:"employments,omitempty" xml:"employments,omitempty"`
	Fundings          *Fundings          `json:"fundings,omitempty" xml:"fundings,omitempty"`
	InvitedPositions  *InvitedPositions  `json:"invited-positions,omitempty" xml:"invited-positions,omitempty"`
	Memberships       *Memberships       `json:"memberships,omitempty" xml:"memberships,omitempty"`
	PeerReviews       *PeerReviews       `json:"peer-reviews,omitempty" xml:"peer-reviews,omitempty"`
	Qualifications    *Qualifications    `json:"qualifications,omitempty" xml:"qualifications,omitempty"`
	ResearchResources *ResearchResources `json:"research-resources,omitempty" xml:"research-resources,omitempty"`
	Services          *Services          `json:"services,omitempty" xml:"services,omitempty"`
	Works             *Works             `json:"works,omitempty" xml:"works,omitempty"`
	Path              Path               `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Address

type Address struct {
	CreatedDate      *Date    `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date    `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source  `json:"source,omitempty" xml:"source,omitempty"`
	Country          *Country `json:"country,omitempty" xml:"country,omitempty"`
	Visibility       string   `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path     `json:"path,omitempty" xml:"path,attr,omitempty"`
	PutCode          int64    `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	DisplayIndex     int      `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
}

type Addresses

type Addresses struct {
	LastModifiedDate *Date      `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Address          []*Address `json:"address,omitempty" xml:"address,omitempty"`
	Path             Path       `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type AffiliationGroup

type AffiliationGroup struct {
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	Summaries        []interface{} `json:"summaries,omitempty" xml:"summaries,omitempty"`
}

type Biography

type Biography struct {
	CreatedDate      *Date  `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date  `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Content          string `json:"content,omitempty" xml:"content,omitempty"`
	Visibility       string `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path   `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Citation

type Citation struct {
	CitationType  string `json:"citation-type,omitempty" xml:"citation-type,omitempty"`
	CitationValue string `json:"citation-value,omitempty" xml:"citation-value,omitempty"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}
Example (WithOptions)
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient(
		orcid.WithBearerToken("your-bearer-token-here"),
		orcid.WithTimeout(60*time.Second),
		orcid.WithRateLimit(5),
		orcid.WithMaxRetries(5),
		orcid.WithContentType(orcid.ContentTypeJSON),
		orcid.WithUserAgent("MyApp/1.0"),
	)

	ctx := context.Background()
	person, err := client.GetPerson(ctx, "0000-0002-1825-0097")
	if err != nil {
		log.Fatal(err)
	}

	if person.Biography != nil {
		fmt.Printf("Biography: %s\n", person.Biography.Content)
	}
}

func NewClient

func NewClient(opts ...ClientOption) *Client

func (*Client) ExpandedSearch

func (c *Client) ExpandedSearch(ctx context.Context, query string) (*ExpandedSearchResult, error)

func (*Client) GetByPath

func (c *Client) GetByPath(ctx context.Context, path Path) (interface{}, error)

GetByPath fetches a resource by its path. Path values are returned by various ORCID API endpoints and can be used to directly fetch specific resources.

Examples:

  • "/0000-0003-1401-2056/qualifications" -> calls GetQualifications
  • "/0000-0003-1401-2056/works" -> calls GetWorks
  • "/0000-0003-1401-2056/person" -> calls GetPerson
  • "/0000-0003-1401-2056" or "/0000-0003-1401-2056/record" -> calls GetRecord

func (*Client) GetDistinctions

func (c *Client) GetDistinctions(ctx context.Context, orcidID string) (*Distinctions, error)

func (*Client) GetEducations

func (c *Client) GetEducations(ctx context.Context, orcidID string) (*Educations, error)
Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()
	ctx := context.Background()

	educations, err := client.GetEducations(ctx, "0000-0002-1825-0097")
	if err != nil {
		log.Fatal(err)
	}

	for _, edu := range educations.EducationSummary {
		if edu.Organization != nil {
			fmt.Printf("Education: %s", edu.Organization.Name)
			if edu.RoleTitle != "" {
				fmt.Printf(" - %s", edu.RoleTitle)
			}
			if edu.StartDate != nil && edu.StartDate.Year != nil {
				fmt.Printf(" (Started: %s)", edu.StartDate.Year.Value)
			}
			fmt.Println()
		}
	}
}

func (*Client) GetEmployments

func (c *Client) GetEmployments(ctx context.Context, orcidID string) (*Employments, error)
Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()
	ctx := context.Background()

	employments, err := client.GetEmployments(ctx, "0000-0002-1825-0097")
	if err != nil {
		log.Fatal(err)
	}

	for _, emp := range employments.EmploymentSummary {
		if emp.Organization != nil {
			fmt.Printf("Employment: %s", emp.Organization.Name)
			if emp.RoleTitle != "" {
				fmt.Printf(" - %s", emp.RoleTitle)
			}
			if emp.StartDate != nil && emp.StartDate.Year != nil {
				fmt.Printf(" (Since: %s)", emp.StartDate.Year.Value)
			}
			fmt.Println()
		}
	}
}

func (*Client) GetFundings

func (c *Client) GetFundings(ctx context.Context, orcidID string) (*Fundings, error)

func (*Client) GetInvitedPositions

func (c *Client) GetInvitedPositions(ctx context.Context, orcidID string) (*InvitedPositions, error)

func (*Client) GetMemberships

func (c *Client) GetMemberships(ctx context.Context, orcidID string) (*Memberships, error)

func (*Client) GetPeerReviews

func (c *Client) GetPeerReviews(ctx context.Context, orcidID string) (*PeerReviews, error)

func (*Client) GetPerson

func (c *Client) GetPerson(ctx context.Context, orcidID string) (*Person, error)

func (*Client) GetQualifications

func (c *Client) GetQualifications(ctx context.Context, orcidID string) (*Qualifications, error)

func (*Client) GetRecord

func (c *Client) GetRecord(ctx context.Context, orcidID string) (*Record, error)
Example
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	// For public API access, you need a bearer token
	// Get your token from https://orcid.org/developer-tools
	client := orcid.NewClient(
		orcid.WithBearerToken("your-bearer-token-here"),
	)

	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
	defer cancel()

	record, err := client.GetRecord(ctx, "0000-0002-1825-0097")
	if err != nil {
		log.Fatal(err)
	}

	if record.Person != nil && record.Person.Name != nil {
		if record.Person.Name.GivenNames != nil {
			fmt.Printf("Given Names: %s\n", record.Person.Name.GivenNames.Value)
		}
		if record.Person.Name.FamilyName != nil {
			fmt.Printf("Family Name: %s\n", record.Person.Name.FamilyName.Value)
		}
	}
}

func (*Client) GetRecordRaw

func (c *Client) GetRecordRaw(ctx context.Context, orcidID string) ([]byte, error)

func (*Client) GetResearchResources

func (c *Client) GetResearchResources(ctx context.Context, orcidID string) (*ResearchResources, error)

func (*Client) GetServices

func (c *Client) GetServices(ctx context.Context, orcidID string) (*Services, error)

func (*Client) GetWork

func (c *Client) GetWork(ctx context.Context, orcidID string, putCode string) (*Work, error)

func (*Client) GetWorks

func (c *Client) GetWorks(ctx context.Context, orcidID string) (*Works, error)
Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()
	ctx := context.Background()

	works, err := client.GetWorks(ctx, "0000-0002-1825-0097")
	if err != nil {
		log.Fatal(err)
	}

	for _, group := range works.WorkGroup {
		for _, summary := range group.WorkSummary {
			if summary.Title != nil && summary.Title.Title != nil {
				fmt.Printf("Work: %s (Type: %s)\n",
					summary.Title.Title.Value,
					summary.Type)
			}
		}
	}
}

func (*Client) Search

func (c *Client) Search(ctx context.Context, params SearchParams) (*SearchResult, error)
Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()

	ctx := context.Background()

	params := orcid.SearchParams{
		Query: "family-name:Smith AND given-names:John",
		Start: 0,
		Rows:  10,
	}

	results, err := client.Search(ctx, params)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Found %d results\n", results.NumFound)
	for _, result := range results.Results {
		if result.OrcidIdentifier != nil {
			fmt.Printf("ORCID: %s\n", result.OrcidIdentifier.Path)
		}
	}
}

func (*Client) SearchIter

func (c *Client) SearchIter(ctx context.Context, params SearchParams) *SearchIterator
Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()
	ctx := context.Background()

	query := orcid.NewSearchQuery().
		Keyword("machine learning").
		WithRows(100)

	iter := client.SearchIterWithQuery(ctx, query)

	count := 0
	for iter.Next() {
		record := iter.Value()
		if record != nil && record.OrcidIdentifier != nil {
			count++
			if count > 5 {
				break
			}
			fmt.Printf("ORCID: %s\n", record.OrcidIdentifier.Path)
		}
	}

	if err := iter.Error(); err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Total results available: %d\n", iter.TotalResults())
}

func (*Client) SearchIterWithQuery

func (c *Client) SearchIterWithQuery(ctx context.Context, query *SearchQuery) *SearchIterator

func (*Client) SearchWithQuery

func (c *Client) SearchWithQuery(ctx context.Context, query *SearchQuery) (*SearchResult, error)

type ClientOption

type ClientOption func(*Client)

func WithAPIURL

func WithAPIURL(url string) ClientOption

func WithBearerToken

func WithBearerToken(token string) ClientOption

func WithContentType

func WithContentType(contentType ContentType) ClientOption

func WithHTTPClient

func WithHTTPClient(client *http.Client) ClientOption

func WithMaxRetries

func WithMaxRetries(maxRetries int) ClientOption

func WithRateLimit

func WithRateLimit(requestsPerSecond int) ClientOption

func WithTimeout

func WithTimeout(timeout time.Duration) ClientOption

func WithUserAgent

func WithUserAgent(userAgent string) ClientOption

type ContentType

type ContentType string
const (
	ContentTypeJSON ContentType = "application/json"
	ContentTypeXML  ContentType = "application/vnd.orcid+xml"
)

type Contributor

type Contributor struct {
	ContributorOrcid      *ContributorOrcid      `json:"contributor-orcid,omitempty" xml:"contributor-orcid,omitempty"`
	CreditName            *CreditName            `json:"credit-name,omitempty" xml:"credit-name,omitempty"`
	ContributorEmail      string                 `json:"contributor-email,omitempty" xml:"contributor-email,omitempty"`
	ContributorAttributes *ContributorAttributes `json:"contributor-attributes,omitempty" xml:"contributor-attributes,omitempty"`
}

type ContributorAttributes

type ContributorAttributes struct {
	ContributorSequence string `json:"contributor-sequence,omitempty" xml:"contributor-sequence,omitempty"`
	ContributorRole     string `json:"contributor-role,omitempty" xml:"contributor-role,omitempty"`
}

type ContributorOrcid

type ContributorOrcid struct {
	URI  string `json:"uri,omitempty" xml:"uri,omitempty"`
	Path Path   `json:"path,omitempty" xml:"path,omitempty"`
	Host string `json:"host,omitempty" xml:"host,omitempty"`
}

type Contributors

type Contributors struct {
	Contributor []*Contributor `json:"contributor,omitempty" xml:"contributor,omitempty"`
}

type Country

type Country struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type CreditName

type CreditName struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type Date

type Date struct {
	Value time.Time `json:"value,omitempty" xml:"value,omitempty"`
}

func (*Date) UnmarshalJSON

func (d *Date) UnmarshalJSON(data []byte) error

UnmarshalJSON handles both Unix milliseconds and time strings

type Day

type Day struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type DisambiguatedOrganization

type DisambiguatedOrganization struct {
	DisambiguatedOrganizationIdentifier string `json:"disambiguated-organization-identifier,omitempty" xml:"disambiguated-organization-identifier,omitempty"`
	DisambiguationSource                string `json:"disambiguation-source,omitempty" xml:"disambiguation-source,omitempty"`
}

type DistinctionSummary

type DistinctionSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Distinctions

type Distinctions struct {
	LastModifiedDate   *Date                 `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	DistinctionSummary []*DistinctionSummary `json:"distinction-summary,omitempty" xml:"distinction-summary,omitempty"`
	AffiliationGroup   []*AffiliationGroup   `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path               Path                  `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type EducationSummary

type EducationSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Educations

type Educations struct {
	LastModifiedDate *Date               `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	EducationSummary []*EducationSummary `json:"education-summary,omitempty" xml:"education-summary,omitempty"`
	AffiliationGroup []*AffiliationGroup `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path             Path                `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Email

type Email struct {
	CreatedDate      *Date   `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source `json:"source,omitempty" xml:"source,omitempty"`
	Email            string  `json:"email,omitempty" xml:"email,omitempty"`
	Primary          bool    `json:"primary,omitempty" xml:"primary,omitempty"`
	Verified         bool    `json:"verified,omitempty" xml:"verified,omitempty"`
	Visibility       string  `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path    `json:"path,omitempty" xml:"path,attr,omitempty"`
	PutCode          int64   `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
}

type Emails

type Emails struct {
	LastModifiedDate *Date    `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Email            []*Email `json:"email,omitempty" xml:"email,omitempty"`
	Path             Path     `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type EmploymentSummary

type EmploymentSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Employments

type Employments struct {
	LastModifiedDate  *Date                `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	EmploymentSummary []*EmploymentSummary `json:"employment-summary,omitempty" xml:"employment-summary,omitempty"`
	AffiliationGroup  []*AffiliationGroup  `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path              Path                 `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type ExpandedSearchRecord

type ExpandedSearchRecord struct {
	OrcidID         string   `json:"orcid-id,omitempty" xml:"orcid-id,omitempty"`
	GivenNames      string   `json:"given-names,omitempty" xml:"given-names,omitempty"`
	FamilyNames     string   `json:"family-names,omitempty" xml:"family-names,omitempty"`
	CreditName      string   `json:"credit-name,omitempty" xml:"credit-name,omitempty"`
	Email           []string `json:"email,omitempty" xml:"email,omitempty"`
	InstitutionName []string `json:"institution-name,omitempty" xml:"institution-name,omitempty"`
}

type ExpandedSearchResult

type ExpandedSearchResult struct {
	NumFound        int                     `json:"num-found" xml:"num-found,attr"`
	ExpandedResults []*ExpandedSearchRecord `json:"expanded-result,omitempty" xml:"expanded-result,omitempty"`
}

type ExternalID

type ExternalID struct {
	ExternalIDType         string                `json:"external-id-type,omitempty" xml:"external-id-type,omitempty"`
	ExternalIDValue        string                `json:"external-id-value,omitempty" xml:"external-id-value,omitempty"`
	ExternalIDNormalized   *ExternalIDNormalized `json:"external-id-normalized,omitempty" xml:"external-id-normalized,omitempty"`
	ExternalIDURL          *URL                  `json:"external-id-url,omitempty" xml:"external-id-url,omitempty"`
	ExternalIDRelationship string                `json:"external-id-relationship,omitempty" xml:"external-id-relationship,omitempty"`
}

type ExternalIDNormalized

type ExternalIDNormalized struct {
	Value     string `json:"value,omitempty" xml:",chardata"`
	Transient bool   `json:"transient,omitempty" xml:"transient,attr,omitempty"`
}

type ExternalIDs

type ExternalIDs struct {
	ExternalID []*ExternalID `json:"external-id,omitempty" xml:"external-id,omitempty"`
}

type ExternalIdentifier

type ExternalIdentifier struct {
	CreatedDate                    *Date   `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate               *Date   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source                         *Source `json:"source,omitempty" xml:"source,omitempty"`
	ExternalIdentifierType         string  `json:"external-id-type,omitempty" xml:"external-id-type,omitempty"`
	ExternalIdentifierValue        string  `json:"external-id-value,omitempty" xml:"external-id-value,omitempty"`
	ExternalIdentifierURL          *URL    `json:"external-id-url,omitempty" xml:"external-id-url,omitempty"`
	ExternalIdentifierRelationship string  `json:"external-id-relationship,omitempty" xml:"external-id-relationship,omitempty"`
	Visibility                     string  `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path                           Path    `json:"path,omitempty" xml:"path,attr,omitempty"`
	PutCode                        int64   `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	DisplayIndex                   int     `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
}

type ExternalIdentifiers

type ExternalIdentifiers struct {
	LastModifiedDate   *Date                 `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ExternalIdentifier []*ExternalIdentifier `json:"external-identifier,omitempty" xml:"external-identifier,omitempty"`
	Path               Path                  `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type FamilyName

type FamilyName struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type FundingGroup

type FundingGroup struct {
	LastModifiedDate *Date             `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ExternalIDs      *ExternalIDs      `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	FundingSummary   []*FundingSummary `json:"funding-summary,omitempty" xml:"funding-summary,omitempty"`
}

type FundingSummary

type FundingSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	Title            *Title        `json:"title,omitempty" xml:"title,omitempty"`
	Type             string        `json:"type,omitempty" xml:"type,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Fundings

type Fundings struct {
	LastModifiedDate *Date           `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	FundingGroup     []*FundingGroup `json:"group,omitempty" xml:"group,omitempty"`
	Path             Path            `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type FuzzyDate

type FuzzyDate struct {
	Year  *Year  `json:"year,omitempty" xml:"year,omitempty"`
	Month *Month `json:"month,omitempty" xml:"month,omitempty"`
	Day   *Day   `json:"day,omitempty" xml:"day,omitempty"`
}

type GivenNames

type GivenNames struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type History

type History struct {
	CreationMethod       string  `json:"creation-method,omitempty" xml:"creation-method,omitempty"`
	CompletionDate       *Date   `json:"completion-date,omitempty" xml:"completion-date,omitempty"`
	SubmissionDate       *Date   `json:"submission-date,omitempty" xml:"submission-date,omitempty"`
	LastModifiedDate     *Date   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Claimed              bool    `json:"claimed,omitempty" xml:"claimed,omitempty"`
	Source               *Source `json:"source,omitempty" xml:"source,omitempty"`
	DeactivationDate     *Date   `json:"deactivation-date,omitempty" xml:"deactivation-date,omitempty"`
	VerifiedEmail        bool    `json:"verified-email,omitempty" xml:"verified-email,omitempty"`
	VerifiedPrimaryEmail bool    `json:"verified-primary-email,omitempty" xml:"verified-primary-email,omitempty"`
}

type InvitedPositionSummary

type InvitedPositionSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type InvitedPositions

type InvitedPositions struct {
	LastModifiedDate       *Date                     `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	InvitedPositionSummary []*InvitedPositionSummary `json:"invited-position-summary,omitempty" xml:"invited-position-summary,omitempty"`
	AffiliationGroup       []*AffiliationGroup       `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path                   Path                      `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type JournalTitle

type JournalTitle struct {
	Value string `json:"value,omitempty" xml:"value,omitempty"`
}

type Keyword

type Keyword struct {
	CreatedDate      *Date   `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source `json:"source,omitempty" xml:"source,omitempty"`
	Content          string  `json:"content,omitempty" xml:"content,omitempty"`
	Visibility       string  `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path    `json:"path,omitempty" xml:"path,attr,omitempty"`
	PutCode          int64   `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	DisplayIndex     int     `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
}

type Keywords

type Keywords struct {
	LastModifiedDate *Date      `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Keyword          []*Keyword `json:"keyword,omitempty" xml:"keyword,omitempty"`
	Path             Path       `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type MembershipSummary

type MembershipSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Memberships

type Memberships struct {
	LastModifiedDate  *Date                `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	MembershipSummary []*MembershipSummary `json:"membership-summary,omitempty" xml:"membership-summary,omitempty"`
	AffiliationGroup  []*AffiliationGroup  `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path              Path                 `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Month

type Month struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type Name

type Name struct {
	CreatedDate      *Date       `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date       `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	GivenNames       *GivenNames `json:"given-names,omitempty" xml:"given-names,omitempty"`
	FamilyName       *FamilyName `json:"family-name,omitempty" xml:"family-name,omitempty"`
	CreditName       *CreditName `json:"credit-name,omitempty" xml:"credit-name,omitempty"`
	Source           *Source     `json:"source,omitempty" xml:"source,omitempty"`
	Visibility       string      `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path        `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type OrcidIdentifier

type OrcidIdentifier struct {
	URI  string `json:"uri,omitempty" xml:"uri,omitempty"`
	Path Path   `json:"path,omitempty" xml:"path,omitempty"`
	Host string `json:"host,omitempty" xml:"host,omitempty"`
}

type Organization

type Organization struct {
	Name                      string                     `json:"name,omitempty" xml:"name,omitempty"`
	Address                   *OrganizationAddress       `json:"address,omitempty" xml:"address,omitempty"`
	DisambiguatedOrganization *DisambiguatedOrganization `json:"disambiguated-organization,omitempty" xml:"disambiguated-organization,omitempty"`
}

type OrganizationAddress

type OrganizationAddress struct {
	City    string `json:"city,omitempty" xml:"city,omitempty"`
	Region  string `json:"region,omitempty" xml:"region,omitempty"`
	Country string `json:"country,omitempty" xml:"country,omitempty"`
}

type OtherName

type OtherName struct {
	CreatedDate      *Date   `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source `json:"source,omitempty" xml:"source,omitempty"`
	Content          string  `json:"content,omitempty" xml:"content,omitempty"`
	Visibility       string  `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path    `json:"path,omitempty" xml:"path,attr,omitempty"`
	PutCode          int64   `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	DisplayIndex     int     `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
}

type OtherNames

type OtherNames struct {
	LastModifiedDate *Date        `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	OtherName        []*OtherName `json:"other-name,omitempty" xml:"other-name,omitempty"`
	Path             Path         `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Path

type Path string

Path is a type alias for ORCID API paths

type PeerReviewGroup

type PeerReviewGroup struct {
	LastModifiedDate  *Date                `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ExternalIDs       *ExternalIDs         `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	PeerReviewSummary []*PeerReviewSummary `json:"peer-review-summary,omitempty" xml:"peer-review-summary,omitempty"`
}

type PeerReviewSummary

type PeerReviewSummary struct {
	PutCode              int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate          *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate     *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source               *Source       `json:"source,omitempty" xml:"source,omitempty"`
	ReviewGroupID        string        `json:"review-group-id,omitempty" xml:"review-group-id,omitempty"`
	ReviewType           string        `json:"review-type,omitempty" xml:"review-type,omitempty"`
	ReviewCompletionDate *FuzzyDate    `json:"review-completion-date,omitempty" xml:"review-completion-date,omitempty"`
	ReviewURL            *URL          `json:"review-url,omitempty" xml:"review-url,omitempty"`
	Organization         *Organization `json:"convening-organization,omitempty" xml:"convening-organization,omitempty"`
	ExternalIDs          *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex         string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility           string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path                 Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type PeerReviews

type PeerReviews struct {
	LastModifiedDate *Date              `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	PeerReviewGroup  []*PeerReviewGroup `json:"group,omitempty" xml:"group,omitempty"`
	Path             Path               `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Person

type Person struct {
	Name                *Name                `json:"name,omitempty" xml:"name,omitempty"`
	OtherNames          *OtherNames          `json:"other-names,omitempty" xml:"other-names,omitempty"`
	Biography           *Biography           `json:"biography,omitempty" xml:"biography,omitempty"`
	ResearcherURLs      *ResearcherURLs      `json:"researcher-urls,omitempty" xml:"researcher-urls,omitempty"`
	Emails              *Emails              `json:"emails,omitempty" xml:"emails,omitempty"`
	Addresses           *Addresses           `json:"addresses,omitempty" xml:"addresses,omitempty"`
	Keywords            *Keywords            `json:"keywords,omitempty" xml:"keywords,omitempty"`
	ExternalIdentifiers *ExternalIdentifiers `json:"external-identifiers,omitempty" xml:"external-identifiers,omitempty"`
	Path                Path                 `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Preferences

type Preferences struct {
	Locale string `json:"locale,omitempty" xml:"locale,omitempty"`
}

type PublicationDate

type PublicationDate struct {
	Year  *Year  `json:"year,omitempty" xml:"year,omitempty"`
	Month *Month `json:"month,omitempty" xml:"month,omitempty"`
	Day   *Day   `json:"day,omitempty" xml:"day,omitempty"`
}

type QualificationSummary

type QualificationSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Qualifications

type Qualifications struct {
	LastModifiedDate     *Date                   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	QualificationSummary []*QualificationSummary `json:"qualification-summary,omitempty" xml:"qualification-summary,omitempty"`
	AffiliationGroup     []*AffiliationGroup     `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path                 Path                    `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Record

type Record struct {
	OrcidIdentifier   *OrcidIdentifier   `json:"orcid-identifier,omitempty" xml:"orcid-identifier,omitempty"`
	Preferences       *Preferences       `json:"preferences,omitempty" xml:"preferences,omitempty"`
	History           *History           `json:"history,omitempty" xml:"history,omitempty"`
	Person            *Person            `json:"person,omitempty" xml:"person,omitempty"`
	ActivitiesSummary *ActivitiesSummary `json:"activities-summary,omitempty" xml:"activities-summary,omitempty"`
	Path              Path               `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type ResearchResourceGroup

type ResearchResourceGroup struct {
	LastModifiedDate        *Date                      `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ExternalIDs             *ExternalIDs               `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	ResearchResourceSummary []*ResearchResourceSummary `json:"research-resource-summary,omitempty" xml:"research-resource-summary,omitempty"`
}

type ResearchResourceSummary

type ResearchResourceSummary struct {
	PutCode          int64        `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date        `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date        `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source      `json:"source,omitempty" xml:"source,omitempty"`
	Title            string       `json:"title,omitempty" xml:"title,omitempty"`
	ExternalIDs      *ExternalIDs `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string       `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string       `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path         `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type ResearchResources

type ResearchResources struct {
	LastModifiedDate      *Date                    `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ResearchResourceGroup []*ResearchResourceGroup `json:"group,omitempty" xml:"group,omitempty"`
	Path                  Path                     `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type ResearcherURL

type ResearcherURL struct {
	CreatedDate      *Date   `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date   `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source `json:"source,omitempty" xml:"source,omitempty"`
	URLName          string  `json:"url-name,omitempty" xml:"url-name,omitempty"`
	URL              *URL    `json:"url,omitempty" xml:"url,omitempty"`
	Visibility       string  `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path    `json:"path,omitempty" xml:"path,attr,omitempty"`
	PutCode          int64   `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	DisplayIndex     int     `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
}

type ResearcherURLs

type ResearcherURLs struct {
	LastModifiedDate *Date            `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ResearcherURL    []*ResearcherURL `json:"researcher-url,omitempty" xml:"researcher-url,omitempty"`
	Path             Path             `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type SearchIterator

type SearchIterator struct {
	// contains filtered or unexported fields
}

func (*SearchIterator) Error

func (si *SearchIterator) Error() error

func (*SearchIterator) Next

func (si *SearchIterator) Next() bool

func (*SearchIterator) TotalResults

func (si *SearchIterator) TotalResults() int

func (*SearchIterator) Value

func (si *SearchIterator) Value() *SearchRecord

type SearchParams

type SearchParams struct {
	Query string
	Start int
	Rows  int
}

type SearchQuery

type SearchQuery struct {
	// contains filtered or unexported fields
}
Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()
	ctx := context.Background()

	query := orcid.NewSearchQuery().
		FamilyName("Einstein").
		And().
		GivenNames("Albert").
		WithRows(5)

	results, err := client.SearchWithQuery(ctx, query)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Found %d results for Albert Einstein\n", results.NumFound)
}
Example (Complex)
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/Epistemic-Technology/orcid/orcid"
)

func main() {
	client := orcid.NewClient()
	ctx := context.Background()

	query := orcid.NewSearchQuery().
		AffiliationOrganization("MIT").
		And().
		RawQuery("(keyword:physics OR keyword:\"quantum computing\")").
		And().
		Not().
		FamilyName("Test").
		WithRows(20)

	results, err := client.SearchWithQuery(ctx, query)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Found %d MIT researchers in physics/quantum computing\n", results.NumFound)
}

func NewSearchQuery

func NewSearchQuery() *SearchQuery

func (*SearchQuery) AffiliationOrganization

func (sq *SearchQuery) AffiliationOrganization(org string) *SearchQuery

func (*SearchQuery) And

func (sq *SearchQuery) And() *SearchQuery

func (*SearchQuery) Biography

func (sq *SearchQuery) Biography(bio string) *SearchQuery

func (*SearchQuery) Build

func (sq *SearchQuery) Build() SearchParams

func (*SearchQuery) CreditName

func (sq *SearchQuery) CreditName(name string) *SearchQuery

func (*SearchQuery) DOI

func (sq *SearchQuery) DOI(doi string) *SearchQuery

func (*SearchQuery) Email

func (sq *SearchQuery) Email(email string) *SearchQuery

func (*SearchQuery) ExternalIdentifier

func (sq *SearchQuery) ExternalIdentifier(identifier string) *SearchQuery

func (*SearchQuery) FamilyName

func (sq *SearchQuery) FamilyName(name string) *SearchQuery

func (*SearchQuery) FundRef

func (sq *SearchQuery) FundRef(id string) *SearchQuery

func (*SearchQuery) FundingTitle

func (sq *SearchQuery) FundingTitle(title string) *SearchQuery

func (*SearchQuery) GRID

func (sq *SearchQuery) GRID(id string) *SearchQuery

func (*SearchQuery) GivenNames

func (sq *SearchQuery) GivenNames(names string) *SearchQuery

func (*SearchQuery) Keyword

func (sq *SearchQuery) Keyword(keyword string) *SearchQuery

func (*SearchQuery) Not

func (sq *SearchQuery) Not() *SearchQuery

func (*SearchQuery) ORCID

func (sq *SearchQuery) ORCID(orcid string) *SearchQuery

func (*SearchQuery) Or

func (sq *SearchQuery) Or() *SearchQuery

func (*SearchQuery) OtherNames

func (sq *SearchQuery) OtherNames(names string) *SearchQuery

func (*SearchQuery) PersonalDetails

func (sq *SearchQuery) PersonalDetails(details string) *SearchQuery

func (*SearchQuery) RINGGOLD

func (sq *SearchQuery) RINGGOLD(id string) *SearchQuery

func (*SearchQuery) ROR

func (sq *SearchQuery) ROR(id string) *SearchQuery

func (*SearchQuery) RawQuery

func (sq *SearchQuery) RawQuery(query string) *SearchQuery

func (*SearchQuery) WithRows

func (sq *SearchQuery) WithRows(rows int) *SearchQuery

func (*SearchQuery) WithStart

func (sq *SearchQuery) WithStart(start int) *SearchQuery

func (*SearchQuery) WorkTitle

func (sq *SearchQuery) WorkTitle(title string) *SearchQuery

type SearchRecord

type SearchRecord struct {
	OrcidIdentifier *OrcidIdentifier `json:"orcid-identifier,omitempty" xml:"orcid-identifier,omitempty"`
}

type SearchResult

type SearchResult struct {
	NumFound int             `json:"num-found" xml:"num-found,attr"`
	Start    int             `json:"start" xml:"start,attr"`
	NumRows  int             `json:"num-rows" xml:"num-rows,attr"`
	Results  []*SearchRecord `json:"result,omitempty" xml:"result,omitempty"`
}

type ServiceSummary

type ServiceSummary struct {
	PutCode          int64         `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date         `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date         `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source       `json:"source,omitempty" xml:"source,omitempty"`
	DepartmentName   string        `json:"department-name,omitempty" xml:"department-name,omitempty"`
	RoleTitle        string        `json:"role-title,omitempty" xml:"role-title,omitempty"`
	StartDate        *FuzzyDate    `json:"start-date,omitempty" xml:"start-date,omitempty"`
	EndDate          *FuzzyDate    `json:"end-date,omitempty" xml:"end-date,omitempty"`
	Organization     *Organization `json:"organization,omitempty" xml:"organization,omitempty"`
	URL              *URL          `json:"url,omitempty" xml:"url,omitempty"`
	ExternalIDs      *ExternalIDs  `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	DisplayIndex     string        `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
	Visibility       string        `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path          `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Services

type Services struct {
	LastModifiedDate *Date               `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ServiceSummary   []*ServiceSummary   `json:"service-summary,omitempty" xml:"service-summary,omitempty"`
	AffiliationGroup []*AffiliationGroup `json:"affiliation-group,omitempty" xml:"affiliation-group,omitempty"`
	Path             Path                `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Source

type Source struct {
	SourceOrcid             *OrcidIdentifier `json:"source-orcid,omitempty" xml:"source-orcid,omitempty"`
	SourceClientID          *SourceClientID  `json:"source-client-id,omitempty" xml:"source-client-id,omitempty"`
	SourceName              *SourceName      `json:"source-name,omitempty" xml:"source-name,omitempty"`
	AssertionOriginOrcid    *OrcidIdentifier `json:"assertion-origin-orcid,omitempty" xml:"assertion-origin-orcid,omitempty"`
	AssertionOriginClientID *SourceClientID  `json:"assertion-origin-client-id,omitempty" xml:"assertion-origin-client-id,omitempty"`
	AssertionOriginName     *SourceName      `json:"assertion-origin-name,omitempty" xml:"assertion-origin-name,omitempty"`
}

type SourceClientID

type SourceClientID struct {
	URI  string `json:"uri,omitempty" xml:"uri,omitempty"`
	Path Path   `json:"path,omitempty" xml:"path,omitempty"`
	Host string `json:"host,omitempty" xml:"host,omitempty"`
}

type SourceName

type SourceName struct {
	Value string `json:"value,omitempty" xml:"value,omitempty"`
}

type Subtitle

type Subtitle struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type Title

type Title struct {
	Title           *TitleValue      `json:"title,omitempty" xml:"title,omitempty"`
	Subtitle        *Subtitle        `json:"subtitle,omitempty" xml:"subtitle,omitempty"`
	TranslatedTitle *TranslatedTitle `json:"translated-title,omitempty" xml:"translated-title,omitempty"`
}

type TitleValue

type TitleValue struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type TranslatedTitle

type TranslatedTitle struct {
	Value        string `json:"value,omitempty" xml:",chardata"`
	LanguageCode string `json:"language-code,omitempty" xml:"language-code,attr,omitempty"`
}

type URL

type URL struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

type Work

type Work struct {
	PutCode          int64            `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date            `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date            `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source          `json:"source,omitempty" xml:"source,omitempty"`
	Title            *Title           `json:"title,omitempty" xml:"title,omitempty"`
	Subtitle         *Subtitle        `json:"subtitle,omitempty" xml:"subtitle,omitempty"`
	TranslatedTitle  *TranslatedTitle `json:"translated-title,omitempty" xml:"translated-title,omitempty"`
	JournalTitle     JournalTitle     `json:"journal-title,omitempty" xml:"journal-title,omitempty"`
	ShortDescription string           `json:"short-description,omitempty" xml:"short-description,omitempty"`
	Citation         *Citation        `json:"citation,omitempty" xml:"citation,omitempty"`
	Type             string           `json:"type,omitempty" xml:"type,omitempty"`
	PublicationDate  *PublicationDate `json:"publication-date,omitempty" xml:"publication-date,omitempty"`
	ExternalIDs      *ExternalIDs     `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	URL              *URL             `json:"url,omitempty" xml:"url,omitempty"`
	Contributors     *Contributors    `json:"contributors,omitempty" xml:"contributors,omitempty"`
	LanguageCode     string           `json:"language-code,omitempty" xml:"language-code,omitempty"`
	Country          *Country         `json:"country,omitempty" xml:"country,omitempty"`
	Visibility       string           `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path             `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type WorkGroup

type WorkGroup struct {
	LastModifiedDate *Date          `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	ExternalIDs      *ExternalIDs   `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	WorkSummary      []*WorkSummary `json:"work-summary,omitempty" xml:"work-summary,omitempty"`
}

type WorkSummary

type WorkSummary struct {
	PutCode          int64            `json:"put-code,omitempty" xml:"put-code,attr,omitempty"`
	CreatedDate      *Date            `json:"created-date,omitempty" xml:"created-date,omitempty"`
	LastModifiedDate *Date            `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	Source           *Source          `json:"source,omitempty" xml:"source,omitempty"`
	Title            *Title           `json:"title,omitempty" xml:"title,omitempty"`
	ExternalIDs      *ExternalIDs     `json:"external-ids,omitempty" xml:"external-ids,omitempty"`
	Type             string           `json:"type,omitempty" xml:"type,omitempty"`
	PublicationDate  *PublicationDate `json:"publication-date,omitempty" xml:"publication-date,omitempty"`
	JournalTitle     JournalTitle     `json:"journal-title,omitempty" xml:"journal-title,omitempty"`
	Visibility       string           `json:"visibility,omitempty" xml:"visibility,attr,omitempty"`
	Path             Path             `json:"path,omitempty" xml:"path,attr,omitempty"`
	DisplayIndex     string           `json:"display-index,omitempty" xml:"display-index,attr,omitempty"`
}

type Works

type Works struct {
	LastModifiedDate *Date        `json:"last-modified-date,omitempty" xml:"last-modified-date,omitempty"`
	WorkGroup        []*WorkGroup `json:"group,omitempty" xml:"group,omitempty"`
	Path             Path         `json:"path,omitempty" xml:"path,attr,omitempty"`
}

type Year

type Year struct {
	Value string `json:"value,omitempty" xml:",chardata"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL