optimade_json¶
Modified JSON API v1.0 for OPTIMADE API
  BaseRelationshipMeta (Meta)   pydantic-model  ¶
 Specific meta field for base relationship resource
 description: str  pydantic-field required  ¶
 OPTIONAL human-readable description of the relationship.
  BaseRelationshipResource (BaseResource)   pydantic-model  ¶
 Minimum requirements to represent a relationship resource
 meta: BaseRelationshipMeta  pydantic-field  ¶
 Relationship meta field. MUST contain 'description' if supplied.
  DataType (Enum)  ¶
    Implementation (BaseModel)   pydantic-model  ¶
 Information on the server implementation
 homepage: Union[pydantic.networks.AnyHttpUrl, optimade.models.jsonapi.Link]  pydantic-field  ¶
 A JSON API links object pointing to the homepage of the implementation.
 issue_tracker: Union[pydantic.networks.AnyUrl, optimade.models.jsonapi.Link]  pydantic-field  ¶
 A JSON API links object pointing to the implementation's issue tracker.
 maintainer: ImplementationMaintainer  pydantic-field  ¶
 A dictionary providing details about the maintainer of the implementation.
 name: str  pydantic-field  ¶
 name of the implementation
 source_url: Union[pydantic.networks.AnyUrl, optimade.models.jsonapi.Link]  pydantic-field  ¶
 A JSON API links object pointing to the implementation source, either downloadable archive or version control system.
 version: str  pydantic-field  ¶
 version string of the current implementation
  ImplementationMaintainer (BaseModel)   pydantic-model  ¶
 Details about the maintainer of the implementation
 email: EmailStr  pydantic-field required  ¶
 the maintainer's email address
  OptimadeError (Error)   pydantic-model  ¶
 detail MUST be present
 __hash__(self)  special  ¶
 Source code in optimade/models/optimade_json.py
 def __hash__(self):
    return hash(self.json())
  Provider (BaseModel)   pydantic-model  ¶
 Information on the database provider of the implementation.
 description: str  pydantic-field required  ¶
 a longer description of the database provider
 homepage: Union[pydantic.networks.AnyHttpUrl, optimade.models.jsonapi.Link]  pydantic-field  ¶
 a JSON API links object pointing to homepage of the database provider, either directly as a string, or as a link object.
 name: str  pydantic-field required  ¶
 a short name for the database provider
 prefix: ConstrainedStrValue  pydantic-field required  ¶
 database-provider-specific prefix as found in section Database-Provider-Specific Namespace Prefixes.
  Relationship (Relationship)   pydantic-model  ¶
 Similar to normal JSON API relationship, but with addition of OPTIONAL meta field for a resource.
  ResponseMeta (Meta)   pydantic-model  ¶
 A JSON API meta member that contains JSON API meta objects of non-standard meta-information.
OPTIONAL additional information global to the query that is not specified in this document, MUST start with a database-provider-specific prefix.
 api_version: SemanticVersion  pydantic-field required  ¶
 Presently used full version of the OPTIMADE API. The version number string MUST NOT be prefixed by, e.g., "v". Examples: 1.0.0, 1.0.0-rc.2.
 data_available: int  pydantic-field  ¶
 An integer containing the total number of data resource objects available in the database for the endpoint.
 data_returned: ConstrainedIntValue  pydantic-field  ¶
 An integer containing the total number of data resource objects returned for the current filter query, independent of pagination.
 implementation: Implementation  pydantic-field  ¶
 a dictionary describing the server implementation
 last_id: str  pydantic-field  ¶
 a string containing the last ID returned
 more_data_available: bool  pydantic-field required  ¶
 false if the response contains all data for the request (e.g., a request issued to a single entry endpoint, or a filter query at the last page of a paginated response) and true if the response is incomplete in the sense that multiple objects match the request, and not all of them have been included in the response (e.g., a query with multiple pages that is not at the last page).
 optimade_schema: Union[pydantic.networks.AnyHttpUrl, optimade.models.jsonapi.Link]  pydantic-field  ¶
 A JSON API links object that points to a schema for the response. If it is a string, or a dictionary containing no meta field, the provided URL MUST point at an OpenAPI schema. It is possible that future versions of this specification allows for alternative schema types. Hence, if the meta field of the JSON API links object is provided and contains a field schema_type that is not equal to the string OpenAPI the client MUST not handle failures to parse the schema or to validate the response against the schema as errors.
 provider: Provider  pydantic-field  ¶
 information on the database provider of the implementation.
 query: ResponseMetaQuery  pydantic-field required  ¶
 Information on the Query that was requested
 response_message: str  pydantic-field  ¶
 response string from the server
 time_stamp: datetime  pydantic-field  ¶
 A timestamp containing the date and time at which the query was executed.
 warnings: List[optimade.models.optimade_json.Warnings]  pydantic-field  ¶
 A list of warning resource objects representing non-critical errors or warnings. A warning resource object is defined similarly to a JSON API error object, but MUST also include the field type, which MUST have the value "warning". The field detail MUST be present and SHOULD contain a non-critical message, e.g., reporting unrecognized search attributes or deprecated features. The field status, representing a HTTP response status code, MUST NOT be present for a warning resource object. This is an exclusive field for error resource objects.
  ResponseMetaQuery (BaseModel)   pydantic-model  ¶
 Information on the query that was requested.
 representation: str  pydantic-field required  ¶
 A string with the part of the URL following the versioned or unversioned base URL that serves the API. Query parameters that have not been used in processing the request MAY be omitted. In particular, if no query parameters have been involved in processing the request, the query part of the URL MAY be excluded. Example: /structures?filter=nelements=2
  Success (Response)   pydantic-model  ¶
 errors are not allowed
 either_data_meta_or_errors_must_be_set(values)  classmethod  ¶
 Overwriting the existing validation function, since 'errors' MUST NOT be set.
Source code in optimade/models/optimade_json.py
 @root_validator(pre=True)
def either_data_meta_or_errors_must_be_set(cls, values):
    """Overwriting the existing validation function, since 'errors' MUST NOT be set."""
    required_fields = ("data", "meta")
    if not any(field in values for field in required_fields):
        raise ValueError(
            f"At least one of {required_fields} MUST be specified in the top-level response."
        )
    # errors MUST be skipped
    if "errors" in values:
        raise ValueError("'errors' MUST be skipped for a successful response.")
    return values
  Warnings (OptimadeError)   pydantic-model  ¶
 OPTIMADE-specific warning class based on OPTIMADE-specific JSON API Error.
From the specification:
A warning resource object is defined similarly to a JSON API error object, but MUST also include the field type, which MUST have the value "warning". The field detail MUST be present and SHOULD contain a non-critical message, e.g., reporting unrecognized search attributes or deprecated features.
Note: Must be named "Warnings", since "Warning" is a built-in Python class.
 type: str  pydantic-field  ¶
 Warnings must be of type "warning"
  Config  ¶
  schema_extra(schema, model)  staticmethod  ¶
 Update OpenAPI JSON schema model for Warning.
- Ensure typeis in the list required properties and in the correct place.
- Remove statusproperty. This property is not allowed forWarning, nor is it a part of the OPTIMADE definition of theWarningobject.
Note
Since type is the last model field defined, it will simply be appended.
Source code in optimade/models/optimade_json.py
 @staticmethod
def schema_extra(schema: Dict[str, Any], model: Type["Warnings"]) -> None:
    """Update OpenAPI JSON schema model for `Warning`.
    * Ensure `type` is in the list required properties and in the correct place.
    * Remove `status` property.
      This property is not allowed for `Warning`, nor is it a part of the OPTIMADE
      definition of the `Warning` object.
    Note:
        Since `type` is the _last_ model field defined, it will simply be appended.
    """
    if "required" in schema:
        if "type" not in schema["required"]:
            schema["required"].append("type")
        else:
            schema["required"] = ["type"]
    schema.get("properties", {}).pop("status", None)
 __hash__(self)  special  ¶
 Source code in optimade/models/optimade_json.py
 def __hash__(self):
    return hash(self.json())
 status_must_not_be_specified(values)  classmethod  ¶
 Source code in optimade/models/optimade_json.py
 @root_validator(pre=True)
def status_must_not_be_specified(cls, values):
    if values.get("status", None) is not None:
        raise ValueError("status MUST NOT be specified for warnings")
    return values