%% Copyright 2022 Philip Kime
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is Philip Kime.

\ProvidesFile{apa.dbx}[2023/03/20\space v9.17\space APA biblatex style data model]
\RequireBiber[3]

\DeclareDatamodelEntrytypes{
  presentation,
  constitution,
  legmaterial,
  legadminmaterial,
  nameonly}

\DeclareDatamodelFields[type=list, datatype=name]{
  narrator,
  execproducer,
  execdirector,
  with}

\DeclareDatamodelFields[type=list, datatype=literal]{
  citation}

\DeclareDatamodelFields[type=field, datatype=literal]{
  source,
  article,
  section,
  amendment,
  appentry}

\DeclareDatamodelEntryfields{
  with,
  narrator,
  execproducer,
  execdirector}

% APA Court cases
\DeclareDatamodelEntryfields[jurisdiction]{
  organization
  citation}

% Legislative material
\DeclareDatamodelEntryfields[legmaterial]{
  source}

% Admin and Executive material
\DeclareDatamodelEntryfields[legadminmaterial]{
  citation,
  source}

% Constitution/charters
\DeclareDatamodelEntryfields[constitution]{
  article,
  section,
  amendment}

\DeclareDatamodelEntryfields[software]{
  appentry}

\DeclareDatamodelEntryfields[report]{
  addendum,
  author,
  authortype,
  chapter,
  doi,
  eprint,
  eprintclass,
  eprinttype,
  institution,
  isrn,
  language,
  location,
  note,
  number,
  pages,
  pagetotal,
  pubstate,
  subtitle,
  title,
  titleaddon,
  type,
  version}

\DeclareDatamodelEntryfields[presentation]{
  addendum,
  author,
  booksubtitle,
  booktitle,
  booktitleaddon,
  chapter,
  doi,
  editor,
  editortype,
  eprint,
  eprintclass,
  eprinttype,
  eventday,
  eventendday,
  eventendhour,
  eventendminute,
  eventendmonth,
  eventendseason,
  eventendsecond,
  eventendtimezone,
  eventendyear,
  eventhour,
  eventminute,
  eventmonth,
  eventseason,
  eventsecond,
  eventtimezone,
  eventyear,
  eventtitle,
  eventtitleaddon,
  isbn,
  language,
  location,
  mainsubtitle,
  maintitle,
  maintitleaddon,
  note,
  number,
  organization,
  pages,
  part,
  publisher,
  pubstate,
  series,
  subtitle,
  title,
  titleaddon,
  venue,
  volume,
  volumes}

\DeclareDatamodelConstraints[book,inbook,article,report]{
  \constraint[type=mandatory]{
    \constraintfield{author}
    \constraintfield{title}
  }
}