The API vocabulary
Generated. Do not edit by hand. Regenerate with
conda run -n tckdb_env python backend/scripts/generate_api_vocabulary.py.
Every token below is read from the code that defines it — the enum members,
the public-reference registry, the code catalogue, the trust rubrics — so this
document cannot describe a word TCKDB does not use. A term added upstream and
not regenerated here turns the CI gate red.
What this is
TCKDB answers in tokens: not_reviewed, hard_failed, matched_direction,
spc_01h9k…, smiles_too_long. Each of them is a real distinction the code
takes seriously, and most of them are not guessable from the string. This is
the list, with a plain-language definition for each and the concrete case where
the meaning turns on something non-obvious.
It assumes you know chemistry and does not assume you know this database. So
substructure gets a sentence about which algorithm ran and chebyshev does
not appear at all: a Chebyshev fit means the same thing here as everywhere
else, and explaining it would bury the tokens that mean something only inside
TCKDB.
What is in, and what is not
A token is here when both of these hold:
- You can meet it. The literal string can appear in a public API response
body, or on the landing page rendered from one. This half is checked
mechanically:
app/glossary/reachability.pycomputes the vocabulary the read schemas and the trust fragment can serialise, and the test suite refuses an entry outside that set. A word only an administrator or an internal service sees is not vocabulary you need. - Chemistry does not decode it. The token says something about TCKDB's own process — how a record was reviewed, how much evidence stands behind it, how your query matched, how a record is named, or why a request was refused.
Three things are deliberately absent:
- The scientific checks. What TCKDB guarantees about chemistry is its own generated document: the scientific check register. Copying it here would create a second copy to keep in step.
- Reaction family names. A reaction's
familyis an RMG identifier —H_Abstraction,Disproportionation,intra_H_migration— carried verbatim. There are 125 of them seeded and thereaction_familytable holds only an id, that name and a timestamp: no display name and no description column exist, so "Hydrogen Abstraction" is not a fact this database holds and inventing 125 of them here would be fiction with a generator's credibility. Recorded as a gap; giving families human-readable names is a schema decision, not a documentation one. - A definition per refusal code. The code catalogue deliberately carries no
prose — the refusal already has a sentence, the one you receive in
detail, and a second copy would drift from it. The code table below therefore renders the facts the catalogue does hold, and invents nothing.
What this covers
| Kind of token | Count | Read from |
|---|---|---|
| Status, badge and query words | 107 | 24 enums, declared in backend/app/glossary/declarations.py |
| Identifier prefixes | 34 | backend/app/services/public_refs.py |
| Trust check names | 143 | backend/app/services/trust/rubrics.py |
| Refusal codes a caller can receive | 155 | backend/app/api/code_catalogue.py |
| total | 439 |
How a record is named
Every record TCKDB serves is named by a public reference — a short prefix, an underscore, and 26 characters: spc_, rxn_, cg_, lot_. The prefix tells you what kind of record it is, and it is the only part you are meant to read.
There are two kinds of reference, and the difference matters more than it looks:
- Content-derived — computed from the record's own canonical identity. The same species has the same reference on every TCKDB instance, so two deployments can be compared, and a reference of this kind is a claim about what the thing is.
- Opaque — 130 random bits. It identifies one row in one database and nothing more. Two instances that hold the same calculation give it different opaque references, and that is correct: an event is not the same event because it looks alike.
Nothing in the string says which kind you are holding, which is why this table exists.
Content-derived prefixes (12)
| Prefix | Names a | Same on every instance? |
|---|---|---|
cas_ |
conformer assignment scheme | yes |
ecs_ |
energy correction scheme | yes |
fsf_ |
frequency scale factor | yes |
geom_ |
geometry | yes |
lit_ |
literature | yes |
lot_ |
level of theory | yes |
rxn_ |
chem reaction | yes |
soft_ |
software | yes |
spc_ |
species | yes |
srel_ |
software release | yes |
wfr_ |
workflow tool release | yes |
wft_ |
workflow tool | yes |
Opaque prefixes (22)
| Prefix | Names a | Same on every instance? |
|---|---|---|
aie_ |
artifact integrity event | no — one row, one database |
calc_ |
calculation | no — one row, one database |
cg_ |
conformer group | no — one row, one database |
co_ |
conformer observation | no — one row, one database |
cpol_ |
curation policy | no — one row, one database |
gasch_ |
group additivity scheme | no — one row, one database |
kin_ |
kinetics | no — one row, one database |
net_ |
network | no — one row, one database |
nkin_ |
network kinetics | no — one row, one database |
nsolve_ |
network solve | no — one row, one database |
rel_ |
dataset release | no — one row, one database |
rman_ |
release manifest | no — one row, one database |
rpa_ |
record reproducibility assessment | no — one row, one database |
rsel_ |
release selection | no — one row, one database |
rxe_ |
reaction entry | no — one row, one database |
sm_ |
statmech | no — one row, one database |
spe_ |
species entry | no — one row, one database |
sub_ |
submission | no — one row, one database |
thm_ |
thermo | no — one row, one database |
trn_ |
transport | no — one row, one database |
ts_ |
transition state | no — one row, one database |
tse_ |
transition state entry | no — one row, one database |
What a person has said about a record
Review status
On the wire: review.status on a record, trust.review_status inside the trust fragment, the review_summary counts on a search response, and the min_review_status filter on a request.
What a human curator has said about one scientific record. It is the only vocabulary here that reports a person's judgement; everything under What TCKDB can check by itself is computed and says nothing about whether anybody has looked.
| Token | What it means |
|---|---|
not_reviewed |
Nobody has looked at this record. It is the state every deposit lands in, and it is a statement about TCKDB's attention, not about the science: an unreviewed record can be perfectly good. |
under_review |
A curator has this record open. It is entered deliberately by a curator, never by depositing, which is the whole difference from not_reviewed. For example: Until 2026-08-24 every deposit was stamped under_review on arrival, so 1,153 records on the hosted database claimed somebody was looking at them when nobody was. Revision c1d8f4a25b30 moved them to not_reviewed. If you read the hosted API before that date, under_review there meant nothing at all. |
approved |
A curator reviewed the record and accepts it. This is the floor the curated read profile draws at: a curated read returns approved records and nothing below them. |
rejected |
A curator reviewed the record and does not accept it. Absent from results unless the request asks for it with include_rejected=true. |
deprecated |
The record should no longer be used — superseded by a better one, or withdrawn. It is kept rather than deleted so an existing citation still resolves. Absent from results unless the request asks with include_deprecated=true. |
When a response ranks candidates it orders them
approved,under_review,not_reviewed,deprecated,rejected—REVIEW_RANKinbackend/app/schemas/reads/scientific_common.py.
What TCKDB can check by itself
Trust status (the evidence badge)
On the wire: trust.trust_status, and trust.evidence.label beside it.
How much of the evidence TCKDB expects for this kind of record is actually attached. It is completeness, not quality: a well_supported rate coefficient is one whose paperwork is complete, not one TCKDB says is right. The first five are the completeness ladder, computed as a weighted ratio of the checks in the record's rubric; hard_failed is not on that ladder at all.
| Token | What it means |
|---|---|
well_supported |
Evidence completeness of 0.90 or better and every check the rubric marks required passed. The required-checks gate is separate from the ratio: a record cannot reach this badge on volume of evidence alone. |
mostly_supported |
Evidence completeness of 0.75 or better. |
partial |
Evidence completeness of 0.50 or better. |
sparse |
Evidence completeness of 0.25 or better. |
unsupported |
Evidence completeness below 0.25. Incomplete, which is not the same as wrong — this is the expected badge for an old record deposited before TCKDB asked for much. |
hard_failed |
A discrete structural failure was found, and the badge is set by that finding rather than by the ratio. Always read trust.evidence.hard_fail_reason beside it: the reason says whether the record contradicts itself, or whether TCKDB can no longer produce the evidence it rests on. |
Check outcomes
On the wire: the values of the trust.evidence.checks map, whose keys are the check names listed further down.
What one deterministic check found. Four states and never a boolean: missing and not_applicable are different answers and collapsing them would penalise a record for a question nobody could ask.
| Token | What it means |
|---|---|
passed |
The check's condition held. Positive evidence, and it counts. |
missing |
The check applied and did not pass. It counts against the record: it is inside the denominator and outside the numerator of the completeness ratio. |
warning |
The check applied, the underlying signal is tri-state, and the result is informational. Warning-kind checks carry zero weight, so this never moves the completeness ratio. |
not_applicable |
The question could not be asked of this record, so the check is excluded from both the numerator and the denominator — it neither helps nor hurts. For example: When geometry_validation_present_for_source_calculations is missing, there is no validation verdict to inspect, so geometry_validation_not_failed_for_source_calculations is not_applicable: "did it fail?" has no answer. Rendering that as false would count the same absence twice. |
Check names are written as assertions, so read the name and the value together:
"ts_graph_or_smiles_present": "missing"means there is no SMILES or mol blob on this transition-state entry. Until 2026-08-24 the same fact was reported as the stringts_graph_or_smiles_presentsitting inside an array namedmissing_checks, which read as a double negative; the four arrayspassed_checks/missing_checks/warning_checks/not_applicable_checkswere replaced by this one map. If you are reading a client written before then, that is what those arrays were.
Hard-fail reasons
On the wire: trust.evidence.hard_fail_reason, and only when trust_status is hard_failed.
Why a record was hard-failed. Each names one discrete, evidenced structural failure — never a low score. Six of them (invalid_lj_pair, no_transport_property_present, no_thermo_representation_present, invalid_external_symmetry, invalid_torsion_dimension, multiplicity_invalid) re-derive a rule the upload path already refuses, so seeing one means the record reached the database by some route that skipped upload validation — an archive restore, a data migration, a bulk importer or direct SQL. Treat those as an incident to trace, not as a record that merely scored badly.
| Token | What it means |
|---|---|
calculation_missing |
The calculation this verdict is about could not be loaded at all. |
calculation_rejected |
The calculation's quality is rejected — a curator marked it unusable. |
kinetics_missing |
The kinetics record could not be loaded. |
statmech_missing |
The statistical-mechanics record could not be loaded. |
thermo_missing |
The thermochemistry record could not be loaded. |
transport_missing |
The transport record could not be loaded. |
species_entry_missing |
The record does not point at the species entry it is supposed to describe, so there is nothing to attribute it to. |
no_thermo_representation_present |
A thermochemistry record carrying no thermochemistry: no NASA polynomial, no Wilhoit, no scalar values, no points. A backstop — the upload path refuses this. |
no_transport_property_present |
A transport record carrying no transport property at all. A backstop — the upload path refuses this. |
invalid_lj_pair |
The Lennard-Jones parameters are not a usable pair. A backstop — the upload path refuses this. |
invalid_temperature_range |
The record's validity range is definitionally impossible: a non-positive temperature, or a minimum above the maximum. Note that a single-temperature range (tmin == tmax) is legal and does not fire this, and there is no upper bound — shock-tube and plasma chemistry are not structurally broken. |
invalid_external_symmetry |
The external symmetry number is below 1. A backstop — the upload path refuses this. |
invalid_torsion_dimension |
A hindered-rotor torsion declares a dimension below 1. A backstop — the upload path refuses this. |
geometry_validation_failed |
TCKDB compared the calculation's geometry against the structure the record claims it is, and the comparison failed. |
artifact_integrity_failed |
The stored bytes behind one of this calculation's artifacts no longer match their digest, or are gone. This one is a statement about TCKDB's custody of the evidence, not about the depositor's science: the record may be perfectly good and we can no longer show you what it rests on. It reflects the latest observation per artifact, so a restored object clears it. |
missing_required_identity |
The kinetics record does not identify a complete reaction — no reaction entry, or a side with no participants on it. |
source_calculation_hard_failed_for_required_role |
A calculation this record depends on for a role it cannot do without — a reactant or product energy, the TS energy, the frequencies — is itself hard-failed. The failure is inherited, so read that calculation's own reason. |
transition_state_entry_missing |
The transition-state entry could not be loaded. |
transition_state_parent_missing |
The entry does not point at the transition state it is an entry for. |
reaction_entry_missing |
The parent transition state names no reaction entry, so the TS belongs to no reaction. |
ts_entry_status_rejected |
The transition-state entry's own status is rejected. |
multiplicity_invalid |
The spin multiplicity is below 1. A backstop — the upload path refuses this. |
all_source_calculations_hard_failed |
Every calculation supporting this transition-state entry is itself hard-failed, so nothing is left to support it. |
geometry_validation_failed_for_source_calculation |
A calculation supporting this transition-state entry failed geometry validation. |
frequency_source_has_zero_imaginary_modes_for_validated_ts |
A transition-state entry whose status is optimized or validated, whose frequency evidence reports no imaginary mode. The record says saddle point and the numbers say minimum. |
frequency_source_reaction_coordinate_not_designated_for_validated_ts |
The record reports more than one imaginary mode and does not say which one is the reaction coordinate. More than one imaginary mode is acceptable — this fires only on the missing designation, which is why it is a question about what was recorded and not about physics. |
Reproducibility grade
On the wire: assessments.reproducibility.grade.
How far somebody else could get with what was deposited. An evidence ladder, independent of both the review status and the trust badge, and a statement about completeness of the deposit rather than a promise of bitwise-identical output. Only a calculation can be graded above described: a thermo or kinetics record keeps the limits of the sources behind it.
| Token | What it means |
|---|---|
insufficient |
The record does not even describe what was done well enough to audit. |
described |
What the record is and the scientific context around it are recorded. The ceiling for every non-calculation record. |
auditable |
The preserved evidence can be inspected: the output bytes are there and were read back through the artifact path. |
rerunnable |
The deposit is complete enough to attempt a rerun — preserved inputs, an execution-parameter snapshot, the upstream dependency snapshot, and no warnings about artifact bytes TCKDB could not read. It is not a claim that a rerun would reproduce the numbers. |
Check names
On the wire: the keys of the trust.evidence.checks map.
A check name is an assertion, so read it together with its value: "irc_evidence_present": "missing" means there is no IRC evidence. The names below are the rubrics' own, and each explanation is the sentence the rubric itself carries — not a paraphrase written here.
kind decides what a failure costs: required — failing it stops the record reaching well_supported, however good the ratio is; optional — contributes to completeness; its absence blocks no badge; warning — informational; carries zero weight. weight is that check's share of the completeness ratio.
Which rubric applies is decided by the kind of record: computed_calculation (v1), computed_kinetics (v1), computed_statmech (v1), computed_thermo (v1), computed_transition_state (v2), computed_transport (v1).
| Check | Rubric | Kind | Weight | What it asks |
|---|---|---|---|---|
arrhenius_parameters_complete |
computed_kinetics |
required | 1 | Arrhenius-family kinetics should include A, A units, n, and Ea. |
arrhenius_units_present |
computed_kinetics |
optional | 1 | Arrhenius A units should be populated for Arrhenius-family kinetics. |
artifacts_present |
computed_calculation |
optional | 1 | At least one calculation_artifact (log, input, ...) should be retained. |
at_least_one_thermo_representation_present |
computed_thermo |
required | 1 | Thermo must have scalar, NASA-7, NASA-9, Wilhoit, or tabulated-point evidence. |
calculation_dependencies_present |
computed_transition_state |
optional | 1 | At least one calculation_dependency edge should document the source-set DAG. |
calculation_dependencies_present_when_expected |
computed_calculation |
optional | 1 | Calculations derived from another step (freq/sp/irc/scan) should record their upstream parent. |
calculation_has_owner |
computed_calculation |
required | 1 | Calculation must be owned by exactly one species_entry or transition_state_entry. |
calculation_type_present |
computed_calculation |
required | 1 | Calculation.type must be set. |
charge_present |
computed_transition_state |
required | 1 | transition_state_entry.charge must be set. |
chem_reaction_present |
computed_transition_state |
optional | 1 | Parent reaction_entry should resolve to a chem_reaction. |
dipole_present |
computed_transport |
optional | 1 | Dipole evidence should be populated when this representation is present. |
dipole_source_present_if_dipole_present |
computed_transport |
optional | 1 | Computed dipole transport evidence should link a dipole source calculation. |
epsilon_present |
computed_transport |
optional | 1 | Lennard-Jones transport should include epsilon/k. |
external_symmetry_present |
computed_statmech |
optional | 1 | External symmetry number should be recorded. |
extra_imaginary_modes_not_flagged |
computed_transition_state |
warning | 1 | Recorded ADR 0012 structural flag: an extra imaginary mode at or above the protocol's tau (advisory). |
freq_source_present |
computed_statmech |
optional | 1 | Computed statmech should link a frequency source calculation when available. |
freq_source_present |
computed_thermo |
optional | 1 | Computed thermo should link a frequency source calculation when available. |
frequency_scale_factor_present_if_applicable |
computed_statmech |
optional | 1 | Frequency-derived statmech should record a frequency scale factor. |
frequency_scale_factor_present_if_applicable |
computed_thermo |
optional | 1 | Frequency-derived thermo should record its frequency scale factor when schema support exists. |
frequency_source_present |
computed_kinetics |
optional | 1 | Frequency source calculations should be linked when available. |
full_transport_source_present |
computed_transport |
optional | 1 | Computed transport should link a full-transport source calculation when available. |
geometry_validation_not_failed_for_source_calculations |
computed_kinetics |
warning | 1 | Source calculation geometry validation is warning (advisory). |
geometry_validation_not_failed_for_source_calculations |
computed_statmech |
warning | 1 | Source calculation geometry validation is warning (advisory). |
geometry_validation_not_failed_for_source_calculations |
computed_thermo |
warning | 1 | Source calculation geometry validation is warning (advisory). |
geometry_validation_not_failed_for_source_calculations |
computed_transition_state |
warning | 1 | Source calculation geometry validation is warning (advisory). |
geometry_validation_not_failed_for_source_calculations |
computed_transport |
warning | 1 | Source calculation geometry validation is warning (advisory). |
geometry_validation_passed_or_warning |
computed_calculation |
warning | 1 | Geometry validation status is warning (advisory). |
geometry_validation_present |
computed_calculation |
optional | 1 | Opt calculations should carry geometry-validation evidence. |
geometry_validation_present_for_source_calculations |
computed_kinetics |
optional | 1 | Strong source calculations should carry geometry-validation evidence. |
geometry_validation_present_for_source_calculations |
computed_statmech |
optional | 1 | Strong source calculations should carry geometry-validation evidence. |
geometry_validation_present_for_source_calculations |
computed_thermo |
optional | 1 | Strong source calculations should carry geometry-validation evidence. |
geometry_validation_present_for_source_calculations |
computed_transition_state |
optional | 1 | At least one opt/irc/path_search source calc should carry geometry validation. |
geometry_validation_present_for_source_calculations |
computed_transport |
optional | 1 | Strong source calculations should carry geometry-validation evidence. |
imaginary_frequency_count_recorded |
computed_transition_state |
optional | 1 | Representative freq result should record n_imag. |
imaginary_frequency_value_present |
computed_transition_state |
optional | 1 | Representative freq result should record the imaginary-mode value (cm-1). |
input_geometry_present |
computed_calculation |
required | 1 | At least one input geometry must be linked. |
irc_evidence_present |
computed_kinetics |
optional | 1 | IRC evidence should be linked when available. |
irc_evidence_present |
computed_transition_state |
optional | 1 | IRC evidence should be linked when available (additive only). |
is_linear_present |
computed_statmech |
optional | 1 | Linearity should be explicitly recorded. |
kinetics_model_present |
computed_kinetics |
required | 1 | Kinetics.model_kind must be set. |
level_of_theory_present |
computed_calculation |
required | 1 | Calculation must resolve to a level_of_theory row. |
lj_pair_present_if_applicable |
computed_transport |
optional | 1 | Lennard-Jones transport should include both sigma and epsilon/k. |
master_equation_or_fit_source_present_if_applicable |
computed_kinetics |
optional | 1 | Explicit master-equation or fit-source roles count when present. |
multiplicity_present |
computed_transition_state |
required | 1 | transition_state_entry.multiplicity must be set. |
multiplicity_valid |
computed_transition_state |
required | 1 | transition_state_entry.multiplicity must be >= 1. |
nasa_coefficients_present |
computed_thermo |
optional | 1 | NASA thermo should include a complete coefficient block. |
opt_source_present |
computed_statmech |
optional | 1 | Computed statmech should link an optimization source calculation when available. |
opt_source_present |
computed_thermo |
optional | 1 | Computed thermo should link an optimization source calculation when available. |
output_geometry_present |
computed_calculation |
optional | 1 | Geometry-producing calculation types should record an output geometry. |
parameters_parsed |
computed_calculation |
optional | 1 | ESS execution parameters should be parsed (EAV rows or JSONB snapshot). |
path_search_evidence_present |
computed_kinetics |
optional | 1 | Path-search evidence should be linked when available. |
path_search_evidence_present |
computed_transition_state |
optional | 1 | Path-search (NEB/GSM/scan parent) evidence should be linked when available. |
point_group_present |
computed_statmech |
optional | 1 | Point group should be recorded when known. |
polarizability_present |
computed_transport |
optional | 1 | Polarizability evidence should be populated when this representation is present. |
polarizability_source_present_if_polarizability_present |
computed_transport |
optional | 1 | Computed polarizability transport evidence should link a polarizability source calculation. |
product_energy_sources_present |
computed_kinetics |
optional | 1 | Product energy source calculations should cover all loaded products. |
quality_recorded |
computed_calculation |
optional | 1 | CalculationQuality should be promoted past the default 'raw'. |
reactant_energy_sources_present |
computed_kinetics |
optional | 1 | Reactant energy source calculations should cover all loaded reactants. |
reaction_coordinate_designated_for_ts |
computed_transition_state |
required | 1 | Representative freq result must identify its reaction coordinate: one imaginary mode needs no designation, more than one does (ADR 0012). |
reaction_entry_present |
computed_kinetics |
required | 1 | Kinetics must be attached to a reaction_entry. |
reaction_entry_present |
computed_transition_state |
required | 1 | Parent transition_state must resolve to a reaction_entry. |
result_block_present |
computed_calculation |
required | 1 | Calculation must have the result block matching its type (sp/opt/freq/irc/scan/path_search). |
review_not_rejected_or_deprecated_if_applicable |
computed_transition_state |
required | 1 | TS-entry review/deprecation checks apply once record_review lookup is wired. |
rigid_rotor_kind_present |
computed_statmech |
required | 1 | Rigid rotor treatment should be recorded. |
rotational_relaxation_present |
computed_transport |
optional | 1 | Rotational-relaxation evidence should be populated when present. |
scalar_thermo_present |
computed_thermo |
optional | 1 | Scalar H298 or S298 values should be populated when using scalar thermo. |
scan_source_present_if_torsions_present |
computed_statmech |
optional | 1 | Torsion-bearing statmech should link scan source evidence. |
scf_stability_present_if_claimed |
computed_calculation |
optional | 1 | SCF stability evidence should be attached when claimed. |
sigma_epsilon_pair_consistent |
computed_transport |
required | 1 | sigma_angstrom and epsilon_over_k_k must be both present or both absent. |
sigma_present |
computed_transport |
optional | 1 | Lennard-Jones transport should include sigma. |
software_release_present |
computed_calculation |
optional | 1 | Calculation should declare which software_release produced it. |
source_calculation_artifacts_present |
computed_kinetics |
optional | 1 | At least one linked source calculation should retain an artifact. |
source_calculation_artifacts_present |
computed_statmech |
optional | 1 | At least one linked source calculation should retain an artifact. |
source_calculation_artifacts_present |
computed_thermo |
optional | 1 | At least one linked source calculation should retain an artifact. |
source_calculation_artifacts_present |
computed_transition_state |
optional | 1 | At least one source calculation should retain an artifact. |
source_calculation_artifacts_present |
computed_transport |
optional | 1 | At least one linked source calculation should retain an artifact. |
source_calculation_has_non_hard_failed_evidence |
computed_statmech |
optional | 1 | Linked source calculations should avoid deterministic hard-fail signals. |
source_calculation_has_non_hard_failed_evidence |
computed_thermo |
optional | 1 | Linked source calculations should avoid deterministic hard-fail signals. |
source_calculation_has_non_hard_failed_evidence |
computed_transition_state |
required | 2 | At least one source calculation must avoid deterministic hard-fail signals. |
source_calculation_has_non_hard_failed_evidence |
computed_transport |
optional | 1 | Linked source calculations should avoid deterministic hard-fail signals. |
source_calculation_lot_present |
computed_kinetics |
required | 1 | All linked source calculations should resolve to level_of_theory. |
source_calculation_lot_present |
computed_statmech |
required | 1 | All linked source calculations should resolve to level_of_theory. |
source_calculation_lot_present |
computed_thermo |
required | 1 | All linked source calculations should resolve to level_of_theory. |
source_calculation_lot_present |
computed_transition_state |
required | 1 | Every source calculation must resolve to a level_of_theory. |
source_calculation_lot_present |
computed_transport |
optional | 1 | All linked source calculations should resolve to level_of_theory. |
source_calculation_result_blocks_present |
computed_kinetics |
optional | 1 | Linked source calculations should have their expected result blocks. |
source_calculation_result_blocks_present |
computed_statmech |
optional | 1 | Linked source calculations should have their expected result blocks. |
source_calculation_result_blocks_present |
computed_thermo |
optional | 1 | Linked source calculations should have their expected result blocks. |
source_calculation_result_blocks_present |
computed_transport |
optional | 1 | Linked source calculations should have their expected result blocks. |
source_calculation_software_present |
computed_kinetics |
optional | 1 | All linked source calculations should declare software_release. |
source_calculation_software_present |
computed_statmech |
optional | 1 | All linked source calculations should declare software_release. |
source_calculation_software_present |
computed_thermo |
optional | 1 | All linked source calculations should declare software_release. |
source_calculation_software_present |
computed_transition_state |
optional | 1 | Every source calculation should declare a software_release. |
source_calculation_software_present |
computed_transport |
optional | 1 | All linked source calculations should declare software_release. |
source_calculation_workflow_tool_present |
computed_statmech |
optional | 1 | Statmech or at least one source calc should declare workflow-tool release metadata. |
source_calculation_workflow_tool_present |
computed_thermo |
optional | 1 | Thermo or at least one source calc should declare workflow-tool release metadata. |
source_calculation_workflow_tool_present |
computed_transition_state |
optional | 1 | At least one source calculation should declare a workflow_tool_release. |
source_calculation_workflow_tool_present |
computed_transport |
optional | 1 | Transport or at least one source calc should declare workflow-tool release metadata. |
source_calculations_present |
computed_kinetics |
required | 1 | At least one kinetics_source_calculation row should support computed kinetics. |
source_calculations_present |
computed_statmech |
required | 1 | At least one statmech_source_calculation row should support computed statmech. |
source_calculations_present |
computed_thermo |
required | 1 | At least one thermo_source_calculation row should support computed thermo. |
source_calculations_present |
computed_transport |
optional | 1 | At least one transport_source_calculation row should support computed transport. |
sp_or_composite_source_present |
computed_statmech |
optional | 1 | Computed statmech may link single-point or composite supporting evidence. |
sp_or_composite_source_present_if_applicable |
computed_thermo |
optional | 1 | Computed thermo should link single-point or composite energy evidence when applicable. |
species_entry_present |
computed_statmech |
required | 1 | Statmech must be attached to a species_entry. |
species_entry_present |
computed_thermo |
required | 1 | Thermo must be attached to a species_entry. |
species_entry_present |
computed_transport |
required | 1 | Transport must be attached to a species_entry. |
statmech_not_rejected_or_deprecated_if_applicable |
computed_statmech |
optional | 1 | Statmech rejection/deprecation checks apply once modeled. |
statmech_origin_is_computed |
computed_statmech |
required | 1 | Statmech.scientific_origin should be computed for this rubric. |
statmech_present |
computed_thermo |
optional | 1 | Linked statmech evidence is expected when schema support exists. |
statmech_treatment_present |
computed_statmech |
required | 1 | Statmech treatment kind should be recorded. |
supporting_calculations_present |
computed_transition_state |
required | 2 | At least one calculation should support this TS entry. |
supporting_geometry_source_present |
computed_transport |
optional | 1 | Computed transport should link supporting-geometry evidence when available. |
temperature_range_present |
computed_kinetics |
optional | 1 | Both tmin_k and tmax_k should be populated. |
temperature_range_present_if_applicable |
computed_thermo |
optional | 1 | Range-bearing thermo should declare temperature bounds. |
temperature_range_valid |
computed_kinetics |
optional | 1 | Temperature range should satisfy 0 < tmin_k < tmax_k <= 10000. |
temperature_range_valid |
computed_thermo |
optional | 1 | Temperature ranges should satisfy 0 < low < high <= 20000. |
thermo_model_present |
computed_thermo |
required | 1 | Thermo should expose scalar, NASA-7, NASA-9, Wilhoit, or tabulated-point model evidence. |
thermo_not_rejected_or_deprecated_if_applicable |
computed_thermo |
optional | 1 | Thermo rejection/deprecation checks apply once modeled. |
thermo_origin_is_computed |
computed_thermo |
required | 1 | Thermo.scientific_origin should be computed for this rubric. |
thermo_points_present |
computed_thermo |
optional | 1 | Tabulated thermo should include at least one point with a thermo value. |
torsion_definitions_present |
computed_statmech |
optional | 1 | Recorded torsions should include torsion coordinate definitions. |
torsion_symmetry_recorded |
computed_statmech |
optional | 1 | Recorded torsions should include symmetry numbers. |
torsions_recorded_if_hindered_rotor_treatment |
computed_statmech |
optional | 1 | Hindered-rotor/statmech torsion treatments should include torsion rows. |
transition_state_entry_present |
computed_transition_state |
required | 1 | The transition_state_entry record under evaluation is loaded. |
transition_state_parent_present |
computed_transition_state |
required | 1 | transition_state_entry must resolve to its parent transition_state. |
transport_model_present |
computed_transport |
required | 1 | Transport should expose at least one structured property representation. |
transport_not_rejected_or_deprecated_if_applicable |
computed_transport |
optional | 1 | Transport rejection/deprecation checks apply once modeled. |
transport_origin_is_computed |
computed_transport |
required | 1 | Transport.scientific_origin should be computed for this rubric. |
transport_property_present |
computed_transport |
required | 1 | At least one transport property must be populated. |
ts_energy_source_present |
computed_kinetics |
optional | 1 | Computed TST kinetics should link a TS energy source calculation. |
ts_frequency_present |
computed_transition_state |
optional | 1 | A frequency calculation should be in the source set. |
ts_graph_or_smiles_present |
computed_transition_state |
optional | 1 | A SMILES or mol blob should be attached to the TS entry. |
ts_optimization_present |
computed_transition_state |
optional | 1 | A TS-optimization calculation should be in the source set. |
ts_single_point_present |
computed_transition_state |
optional | 1 | A single-point calculation should be in the source set. |
ts_status_not_rejected |
computed_transition_state |
required | 1 | transition_state_entry.status must not be rejected. |
ts_status_recorded |
computed_transition_state |
required | 1 | transition_state_entry.status must be set. |
tunneling_metadata_present_if_claimed |
computed_kinetics |
optional | 1 | A claimed tunneling model should have a non-empty identifier. |
uncertainty_present |
computed_kinetics |
optional | 1 | At least one uncertainty field should be populated. |
uncertainty_present |
computed_thermo |
optional | 1 | At least one thermo uncertainty field should be populated. |
uses_projected_frequencies_recorded |
computed_statmech |
optional | 1 | Projected-frequency handling should be explicitly recorded. |
workflow_tool_release_present |
computed_calculation |
optional | 1 | Calculation should declare which workflow_tool_release orchestrated it. |
workflow_tool_release_present |
computed_kinetics |
optional | 1 | Kinetics or at least one source calc should declare workflow-tool release metadata. |
Which contract a response answers under
Read profile
On the wire: request.profile, echoed on every scientific response.
Which contract the response answers under. Always echoed, never inferred: a consumer should not have to guess whether they are looking at the archive or at a curated set.
| Token | What it means |
|---|---|
exploratory |
Every visible candidate, each with its own review and trust state, and no recommendation from TCKDB about which is right. This is the default on every read surface, deliberately: on a corpus that is mostly uncurated a curated default returns an empty page and reads as a broken database. |
curated |
Only records at or above the approved review floor. Records are not annotated with any release selection that names them — for an attributed endorsement use the /api/v1/scientific/releases/* endpoints. |
Profile recommendation
On the wire: request.profile_recommendation, echoed beside request.profile.
Whether the records in this response carry a TCKDB recommendation. It is a separate field from the profile because none of its three values can be derived from the profile token alone.
| Token | What it means |
|---|---|
none |
These are candidates. TCKDB is not telling you which one to use. |
approved_floor_only |
Every record shown is at or above the approved review floor and nothing more is claimed. A human accepted each of them, which is not the same as TCKDB preferring them over their siblings. |
tckdb_curated_release |
These records are the ones an attributed, append-only release selection names in a published release. Only the release endpoints emit this. |
Dataset release status
On the wire: status on a dataset release.
Lifecycle of a citable dataset release.
| Token | What it means |
|---|---|
draft |
Being assembled. Selections may still be appended, no manifest is frozen, and it is neither served under the curated profile nor citable. |
published |
The manifest is frozen and checksummed. The release is citable and its bytes are reproducible. |
withdrawn |
It was published and later retracted. The row and its manifest are kept so an existing citation never dangles; the status is how a consumer is told not to rely on it. |
Release selection action
On the wire: action on a release selection row.
What one selection row asserts. Selections are append-only and never edited: a curator changing their mind appends a row pointing at the one it replaces.
| Token | What it means |
|---|---|
select |
The first attributed selection of a candidate record. |
supersede |
Replaces an earlier selection with a different candidate. |
withdraw |
Retires an earlier selection with no replacement — the release then makes no recommendation for that subject. |
Release artifact kind
On the wire: kind on a file listed in a release manifest.
The role of one checksummed file inside a dataset release. A release deliberately ships the selection and the material needed to disagree with it.
| Token | What it means |
|---|---|
selected_records |
The records the release selects. |
candidate_records |
The candidates that were not selected, so a reader can check the choice. |
review_history |
The review decisions behind those records. |
selection_ledger |
The append-only log of selection actions themselves. |
How your query matched
Reaction direction
On the wire: the direction request parameter, and — the one that surprises people — matched_direction on every reaction and kinetics search result.
Which way round the stored equation had to be read for your query to match it. TCKDB stores a reaction in one orientation; a query naming the other side still matches, and matched_direction is how the response tells you that happened. It is present on every row, including the forward ones, so its absence never has to be interpreted.
| Token | What it means |
|---|---|
forward |
Your query matched the reaction as stored: what you asked for as reactants are that reaction's reactants. |
reverse |
Your query matched the reaction read backwards: what you asked for as reactants are that reaction's products. The landing page renders this as "matched in reverse". |
either |
Match the reaction in whichever orientation works. This is the default on a request; it is not an answer a result row gives — a matched row always reports forward or reverse. |
Search
reactants=NNand one of the results is[NH2] + [NH2] <=> NNwithmatched_direction: "reverse". Nothing is wrong: NN is stored as a product of that reaction, and reading the equation backwards puts it on the reactant side, which is what your query asked about. Whatmatched_directiondoes not tell you is which way round the rate coefficients on that record run: a kinetics record carries its owndirection(below), stated relative to the stored orientation. So read both —matched_directionsays how TCKDB found the reaction for you,directionsays what the numbers on it describe.
Kinetics direction
On the wire: direction on a kinetics record, and the filter of the same name.
Which direction of the stored equation a rate coefficient describes. It is stated relative to the reaction entry's stored reactant-to-product orientation, which is what makes it a different question from matched_direction: that one is about your query, this one is about the numbers. A record may leave it unset — the historical default — in which case the value comes back empty and all you know is that the producer did not say.
| Token | What it means |
|---|---|
forward |
A fit of the rate in the stored orientation: reactants to products as written. |
reverse |
A fit of the rate for the same equation run backwards. It can sit on the same reaction entry as a forward fit — Chemkin and Cantera give the two as separate expressions, so TCKDB keeps them as separate records rather than merging them. |
net |
A rate that already folds both directions together — an apparent or observed net rate. |
Participant match mode
On the wire: the match request parameter on reaction and kinetics search.
How the species you listed are compared against a stored reaction's sides.
| Token | What it means |
|---|---|
contains |
The default. Set containment per role: every species you name must appear in that role of the stored reaction, and a side you did not mention constrains nothing. Containment is by set, not multiset — naming a species once matches a reaction consuming two of it. For example: reactants=NN alone means "NN among the reactants, products unconstrained" — which is what a chemist means by "reactions of hydrazine". |
exact |
Multiset equality on both sides: precisely this equation, both sides, counts included. Ask for this when you want one specific reaction rather than a family. |
Collapse mode
On the wire: the collapse request parameter, echoed in request.collapse.
How many records per subject the response returns.
| Token | What it means |
|---|---|
all |
Every eligible record, after filtering, sorting and pagination. The default. |
first |
At most one record — zero or one — after filtering and sorting. Which one is decided by the selection policy below, and that choice is made at read time; it stores nothing. |
Selection policy
On the wire: the selection_policy request parameter, meaningful when collapse=first.
Which candidate wins when the response is collapsed to one. Naming the policy makes "show me one" an explicit choice rather than a silent one. No policy persists a curator decision — for an attributed endorsement, use a dataset release.
| Token | What it means |
|---|---|
default |
The endpoint's standard ranking. |
latest |
Most recently created first. |
most_reviewed |
Best review status first, then most recent. |
Structure search mode
On the wire: the mode request parameter on structure search, echoed in each match summary.
Which matching algorithm produced a structure-search hit.
| Token | What it means |
|---|---|
substructure |
RDKit substructure containment: the stored molecule contains the query pattern. |
similarity |
Tanimoto similarity over Morgan fingerprints. Only this mode populates similarity_score on a result. |
exact |
Equality of canonical InChIKey. |
Structure query kind
On the wire: matched_query_kind on a structure-search match summary.
Which of the query fields a hit came from, echoed so a caller with several query inputs can attribute a result without re-parsing the request.
| Token | What it means |
|---|---|
smiles |
The match came from the supplied SMILES. |
smarts |
The match came from the supplied SMARTS pattern. |
inchi |
The match came from the supplied InChI. |
inchi_key |
The match came from the supplied InChIKey. |
How a record was produced
Scientific origin
On the wire: scientific_origin on a record, and the filter of the same name.
Where a number came from, before anything else is said about it.
| Token | What it means |
|---|---|
computed |
Produced by a quantum-chemistry or kinetics calculation. |
experimental |
Measured in a laboratory rather than computed or estimated. |
estimated |
Estimated — group additivity, an analogy, a correlation. |
Calculation type
On the wire: calculation_type on a calculation record, and the filter of the same name.
What kind of job a stored calculation was. TCKDB records the job, not the intent: a freq on an unoptimised geometry is still a freq.
| Token | What it means |
|---|---|
opt |
Geometry optimisation. |
freq |
Frequency (Hessian) calculation. |
sp |
Single-point energy. |
irc |
Intrinsic reaction coordinate following. |
scan |
A scan over one or more internal coordinates. |
path_search |
A reaction-path search producing a TS guess. Which algorithm ran (NEB, GSM, …) is recorded on the result row, not as a separate type. |
conf |
A conformer search — a job exploring the accessible conformations of one species. |
Calculation quality
On the wire: quality on a calculation record, and the filter of the same name.
A curation flag on one calculation, separate from the review status of the record it supports.
| Token | What it means |
|---|---|
raw |
The default every calculation is stored with. It means nobody has curated it, not that anything is wrong. |
curated |
Someone has curated this calculation and stands behind it. |
rejected |
Marked unusable. Such calculations are excluded from results unless a request opts in with include_rejected_quality=true, and a record resting on one is hard-failed with calculation_rejected. |
Geometry validation status
On the wire: validation_status on a calculation's geometry-validation summary, and geometry_validation_status on a calculation evidence summary.
What TCKDB found when it compared a calculation's geometry against the structure the record claims it is — connectivity and molecular identity, not energetics.
| Token | What it means |
|---|---|
passed |
The geometry is the structure the record claims. |
warning |
Something differs and TCKDB will not call it a failure. An optimisation that drifted is science to record, not a payload to refuse. |
fail |
The geometry is not the claimed structure. This hard-fails the calculation's trust badge with geometry_validation_failed. |
not_present |
Nobody checked. There is no validation row for this calculation, and the read layer says so rather than leaving the field empty — an absent check and a passed check are different answers and TCKDB will not let them look alike. |
The record itself stores only passed, warning, fail; not_present is added by the read layer, which is why you will not find it in the database schema.
Atom-map source
On the wire: source on a reaction's atom-map badge.
How the atom-to-atom correspondence across a reaction was obtained. The column has no default: a map that cannot say how it was obtained is not a map TCKDB accepts.
| Token | What it means |
|---|---|
declared |
A depositor stated the correspondence — they ran the calculation and followed the reaction coordinate, so they know which atom went where. |
inferred |
An algorithm produced it. Read back as inferred, never as though a human asserted it. |
Transition-state entry status
On the wire: status on a transition-state entry.
How far a transition-state entry has been taken by whoever deposited it.
| Token | What it means |
|---|---|
guess |
A starting structure. Not optimised. |
optimized |
Optimised to a stationary point. |
validated |
Optimised and checked as a transition state for the reaction it claims — the strongest thing an entry says about itself. |
rejected |
Kept, but not to be used. It hard-fails the entry's trust badge with ts_entry_status_rejected. |
Artifact integrity finding
On the wire: finding on an artifact-integrity observation.
What was observed when TCKDB read stored bytes back and checked them against their digest. Not severities: four different observations, and the log is append-only, so a repaired object is a new observation rather than an edit.
| Token | What it means |
|---|---|
digest_mismatch |
The object was read and does not hash to the key it is stored under. The bytes are not the bytes TCKDB claims to hold. |
size_mismatch |
The digest could not be faulted but the length differs from the byte count on the artifact row — almost always a truncated read rather than a changed object. |
object_missing |
The object is absent from the store entirely. |
verified |
The object was read and does hash to its key. Recorded only for a digest that already carries a break — this is the observation that clears one, which is why a restored record does not stay condemned forever. |
Why a request was refused
When TCKDB refuses a request the body carries a code. Branch on that, never on the English detail — the code is the contract and the sentence is not. These are every code a caller can receive; the catalogue also holds codes for internal guards and server faults, which no request can provoke and which are therefore not listed here.
Two facts accompany each one, and neither is obvious from the name:
- A thing or a relationship. A code naming a thing (
unknown_release,smiles_too_long) is complete as it stands. A code naming a relationship (state_conflict, a mismatch, an ambiguity) asserts something about two or more things and names none of them, so the envelope's structuredcontextowes you which ones. Where acontextis still empty for such a code, that is a known gap rather than a claim that there is nothing to say. - Whether replaying helps. Every code here refuses something about the request, so replaying an unchanged request generally meets the same answer. The exception worth knowing is the short list at the end of this section: server-side conditions a retry layer must not replay, because they are deterministic and no wait will clear them.
There is deliberately no definition column: the refusal already sent you a sentence, and a second copy kept here would drift from it. backend/app/api/code_catalogue.py names the module that raises each one.
HTTP 400 (1 code)
| Code | Names |
|---|---|
invalid_idempotency_key |
a thing |
HTTP 404 (19 codes)
| Code | Names |
|---|---|
curator_task_not_found |
a thing |
handle_not_found |
a thing |
irc_result_not_found |
a thing |
manifest_not_frozen |
a thing |
owner_missing |
a thing |
path_search_result_not_found |
a thing |
scan_result_not_found |
a thing |
unknown_calculation_artifact_ref |
a thing |
unknown_calculation_ref |
a thing |
unknown_conformer_group_ref |
a thing |
unknown_conformer_selection |
a thing |
unknown_curation_policy |
a thing |
unknown_network_kinetics_ref |
a thing |
unknown_record |
a thing |
unknown_release |
a thing |
unknown_release_artifact |
a thing |
unknown_selection |
a thing |
unknown_statmech_ref |
a thing |
unknown_transition_state_entry_ref |
a thing |
HTTP 409 (19 codes)
| Code | Names |
|---|---|
atom_map_element_not_conserved |
a relationship — read context |
atom_map_not_a_bijection |
a relationship — read context |
curation_policy_version_conflict |
a relationship — read context |
doi_already_recorded |
a relationship — read context |
email_taken |
a thing |
energy_transfer_scope_columns_disagree |
a relationship — read context |
idempotency_conflict |
a relationship — read context |
manifest_already_frozen |
a thing |
network_solve_reported_requires_literature |
a thing |
reference_conflict |
a relationship — read context |
release_not_draft |
a thing |
release_not_published |
a thing |
release_tag_taken |
a thing |
selection_already_stands |
a relationship — read context |
selection_already_superseded |
a relationship — read context |
state_conflict |
a relationship — read context |
statmech_subject_not_exactly_one |
a thing |
unique_conflict |
a relationship — read context |
username_taken |
a thing |
HTTP 422 (112 codes)
| Code | Names |
|---|---|
ambiguous_conformer_selection_locator |
a relationship — read context |
applied_energy_correction_source_calculation_owner_mismatch |
a relationship — read context |
applied_energy_correction_source_key_undeclared |
a thing |
arrhenius_a_units_molecularity_mismatch |
a relationship — read context |
atom_map_atoms_unaccounted_for |
a relationship — read context |
atom_map_contradicts_irc_mapping |
a relationship — read context |
atom_map_element_not_conserved |
a relationship — read context |
atom_map_geometry_unparseable |
a thing |
atom_map_indices_not_geometry_relative |
a relationship — read context |
atom_map_inferred_requires_note |
a thing |
atom_map_not_a_bijection |
a relationship — read context |
atom_map_participant_not_declared |
a thing |
atom_map_without_transition_state |
a thing |
calculation_geometry_composition_mismatch |
a relationship — read context |
calculation_handle_conflict |
a relationship — read context |
calculation_key_undeclared |
a thing |
canonical_parameter_value_requires_key |
a thing |
client_sort_not_supported |
a thing |
composed_search_candidate_limit_exceeded |
a relationship — read context |
composed_search_invalid_page |
a relationship — read context |
composed_search_pagination_changed |
a relationship — read context |
composed_search_pagination_stalled |
a relationship — read context |
conformer_key_undeclared |
a thing |
cursor_offset_conflict |
a relationship — read context |
cursor_query_mismatch |
a relationship — read context |
export_all_cap_exceeded |
a relationship — read context |
export_seed_empty |
a thing |
export_seed_unresolved |
a thing |
freq_list_exceeds_geometry_degrees_of_freedom |
a relationship — read context |
freq_mode_index_not_unique |
a relationship — read context |
freq_n_imag_disagrees_with_modes |
a relationship — read context |
geometry_key_unresolved |
a thing |
geometry_too_large |
a relationship — read context |
handle_type_mismatch |
a relationship — read context |
include_not_implemented_yet |
a thing |
invalid_cursor |
a thing |
invalid_handle |
a thing |
invalid_pagination |
a thing |
invalid_range |
a relationship — read context |
invalid_structure_query |
a thing |
invalid_temperature_range |
a relationship — read context |
kinetics_interpretation_conformer_selection_owner_mismatch |
a relationship — read context |
kinetics_interpretation_statmech_owner_mismatch |
a relationship — read context |
level_of_theory_handle_conflict |
a relationship — read context |
limit_too_large |
a relationship — read context |
lowest_energy_unavailable |
a thing |
micro_reaction_key_undeclared |
a thing |
missing_filter |
a thing |
missing_identifier |
a thing |
missing_reaction_search_filter |
a thing |
missing_structure_query |
a thing |
ml_export_all_cap_exceeded |
a relationship — read context |
ml_export_lot_unresolved |
a thing |
ml_export_seed_empty |
a thing |
ml_export_seed_unresolved |
a thing |
multiple_structure_queries |
a relationship — read context |
n_imag_contradicts_minimum |
a relationship — read context |
network_channel_key_undeclared |
a thing |
network_state_key_undeclared |
a thing |
non_finite_value |
a thing |
offset_too_large |
a relationship — read context |
parameter_value_requires_key |
a thing |
post_search_fields_must_be_in_body |
a thing |
pressure_alias_conflict |
a relationship — read context |
query_too_expensive |
a relationship — read context |
rationale_required |
a thing |
reaction_charge_not_conserved |
a relationship — read context |
reaction_entry_handle_conflict |
a relationship — read context |
reaction_handle_conflict |
a relationship — read context |
reaction_mass_balance_failed |
a relationship — read context |
record_has_no_subject |
a thing |
record_not_approved |
a thing |
record_ref_not_selectable |
a thing |
record_subject_mismatch |
a relationship — read context |
record_type_not_selectable |
a thing |
release_scoping_not_implemented |
a thing |
release_selects_nothing |
a thing |
selection_no_longer_approved |
a thing |
smiles_too_long |
a relationship — read context |
species_entry_handle_conflict |
a relationship — read context |
species_geometry_composition_mismatch |
a relationship — read context |
species_geometry_isotope_mismatch |
a relationship — read context |
species_handle_conflict |
a relationship — read context |
species_key_undeclared |
a thing |
species_kind_conflict |
a relationship — read context |
species_smiles_charge_mismatch |
a relationship — read context |
statmech_calculation_key_undeclared |
a thing |
statmech_source_calculation_owner_mismatch |
a relationship — read context |
statmech_source_role_type_mismatch |
a relationship — read context |
statmech_torsion_scan_calculation_owner_mismatch |
a relationship — read context |
stored_species_smiles_unparseable |
a thing |
subject_type_mismatch |
a relationship — read context |
supersedes_same_record |
a relationship — read context |
thermo_source_calculation_owner_mismatch |
a relationship — read context |
thermo_source_role_type_mismatch |
a relationship — read context |
thermo_statmech_owner_mismatch |
a relationship — read context |
transition_state_charge_mismatch |
a relationship — read context |
transition_state_composition_mismatch |
a relationship — read context |
transition_state_irc_mapping_element_mismatch |
a relationship — read context |
transition_state_key_undeclared |
a thing |
transition_state_no_imaginary_mode |
a thing |
transition_state_reaction_coordinate_ambiguous |
a relationship — read context |
transition_state_reaction_coordinate_not_designated |
a thing |
unknown_include_token |
a thing |
unknown_record_type |
a thing |
unsafe_lowest_energy_comparison |
a thing |
unsupported_direction |
a thing |
unsupported_filter |
a thing |
unsupported_ranking_for_calculation_type |
a thing |
unsupported_reaction_molecularity |
a thing |
unsupported_release_record_type |
a thing |
withdraw_reason_required |
a thing |
HTTP 426 (3 codes)
| Code | Names |
|---|---|
tckdb_client_version_invalid |
a thing |
tckdb_client_version_missing |
a thing |
tckdb_client_version_unsupported |
a relationship — read context |
HTTP 429 (1 code)
| Code | Names |
|---|---|
rate_limit_exceeded |
a thing |
Codes it is pointless to replay (2)
These arrive at a status that normally invites a retry, and for these codes a retry is a loop with no exit: the condition is deterministic, so waiting cannot clear it and only an operator can. They refuse nothing you did, which is why they are absent from the tables above. The same list is generated into the Python client as NON_RETRYABLE_CODES; backend/app/api/code_catalogue.py records why each one is permanent.
artifact_integrity_failed— HTTP 502artifact_object_missing— HTTP 502
Tokens are read from the code at generation time; the definitions live in backend/app/glossary/declarations.py, beside the enum each one describes. backend/tests/scripts/test_api_vocabulary.py holds this document to its sources: it fails if the committed copy drifts from a fresh render, if a declared token is not a real member of its enum, or if an enum every response carries has no entry here.