adapter¶
        
Reference            (EntryAdapter)
        
¶
    Lazy reference resource converter.
Go to EntryAdapter to see the full list of methods
and properties.
Attributes:
| Name | Type | Description | 
|---|---|---|
ENTRY_RESOURCE | 
        ReferenceResource | 
        This adapter stores entry resources as
  | 
      
_type_converters | 
        Dict[str, Callable] | 
        Dictionary of valid conversion types for entry. There are currently no available types.  | 
      
as_<_type_converters> | 
        Convert entry to a type listed in   | 
      
Source code in optimade/adapters/references/adapter.py
          class Reference(EntryAdapter):
    """
    Lazy reference resource converter.
    Go to [`EntryAdapter`][optimade.adapters.base.EntryAdapter] to see the full list of methods
    and properties.
    Attributes:
        ENTRY_RESOURCE (ReferenceResource): This adapter stores entry resources as
            [`ReferenceResource`][optimade.models.references.ReferenceResource]s.
        _type_converters (Dict[str, Callable]): Dictionary of valid conversion types for entry.
            There are currently no available types.
        as_<_type_converters>: Convert entry to a type listed in `_type_converters`.
    """
    ENTRY_RESOURCE: type[ReferenceResource] = ReferenceResource
        
ENTRY_RESOURCE            (EntryResource)
        
  
      pydantic-model
  
¶
    The references entries describe bibliographic references.
The following properties are used to provide the bibliographic details:
- address, annote, booktitle, chapter, crossref, edition, howpublished, institution, journal, key, month, note, number, organization, pages, publisher, school, series, title, volume, year: meanings of these properties match the BibTeX specification, values are strings;
 - bib_type: type of the reference, corresponding to type property in the BibTeX specification, value is string;
 - authors and editors: lists of person objects which are dictionaries with the following keys:
- name: Full name of the person, REQUIRED.
 - firstname, lastname: Parts of the person's name, OPTIONAL.
 
 - doi and url: values are strings.
 - Requirements/Conventions:
- Support: OPTIONAL support in implementations, i.e., any of the properties MAY be 
null. - Query: Support for queries on any of these properties is OPTIONAL. If supported, filters MAY support only a subset of comparison operators.
 - Every references entry MUST contain at least one of the properties.
 
 - Support: OPTIONAL support in implementations, i.e., any of the properties MAY be 
 
Source code in optimade/adapters/references/adapter.py
          class ReferenceResource(EntryResource):
    """The `references` entries describe bibliographic references.
    The following properties are used to provide the bibliographic details:
    - **address**, **annote**, **booktitle**, **chapter**, **crossref**, **edition**, **howpublished**, **institution**, **journal**, **key**, **month**, **note**, **number**, **organization**, **pages**, **publisher**, **school**, **series**, **title**, **volume**, **year**: meanings of these properties match the [BibTeX specification](http://bibtexml.sourceforge.net/btxdoc.pdf), values are strings;
    - **bib_type**: type of the reference, corresponding to **type** property in the BibTeX specification, value is string;
    - **authors** and **editors**: lists of *person objects* which are dictionaries with the following keys:
        - **name**: Full name of the person, REQUIRED.
        - **firstname**, **lastname**: Parts of the person's name, OPTIONAL.
    - **doi** and **url**: values are strings.
    - **Requirements/Conventions**:
        - **Support**: OPTIONAL support in implementations, i.e., any of the properties MAY be `null`.
        - **Query**: Support for queries on any of these properties is OPTIONAL.
            If supported, filters MAY support only a subset of comparison operators.
        - Every references entry MUST contain at least one of the properties.
    """
    type: str = OptimadeField(
        "references",
        description="""The name of the type of an entry.
- **Type**: string.
- **Requirements/Conventions**:
    - **Support**: MUST be supported by all implementations, MUST NOT be `null`.
    - **Query**: MUST be a queryable property with support for all mandatory filter features.
    - **Response**: REQUIRED in the response.
    - MUST be an existing entry type.
    - The entry of type <type> and ID <id> MUST be returned in response to a request for `/<type>/<id>` under the versioned base URL.
- **Example**: `"structures"`""",
        regex="^references$",
        support=SupportLevel.MUST,
        queryable=SupportLevel.MUST,
    )
    attributes: ReferenceResourceAttributes
    @validator("attributes")
    def validate_attributes(cls, v):
        if not any(prop[1] is not None for prop in v):
            raise ValueError("reference object must have at least one field defined")
        return v