# recap > Scientific framework for Reproducible Experiment Capture and Provenance ## Docs ### API Reference #### Client > Local and remote clients, namespace context, and permissions. - [RecapClient](https://github.com/NSLS2/recap/reference/RecapClient.html): Primary entry point for interacting with a RECAP provenance database - [ActorPermissions](https://github.com/NSLS2/recap/reference/ActorPermissions.html): Current actor's effective permissions returned by remote APIs - [EffectivePermissions](https://github.com/NSLS2/recap/reference/EffectivePermissions.html) - [PermissionDecision](https://github.com/NSLS2/recap/reference/PermissionDecision.html) - [DenialCode](https://github.com/NSLS2/recap/reference/DenialCode.html) #### Queries > Immutable query composition and field predicates. - [QueryDSL](https://github.com/NSLS2/recap/reference/QueryDSL.html): Factory for namespace-scoped query families - [Field](https://github.com/NSLS2/recap/reference/Field.html): Typed query-field expression builder - [FieldPredicate](https://github.com/NSLS2/recap/reference/FieldPredicate.html): Serializable field comparison used by :meth:`BaseQuery.where` - [FieldOrdering](https://github.com/NSLS2/recap/reference/FieldOrdering.html): Serializable ascending or descending field ordering - [BaseQuery](https://github.com/NSLS2/recap/reference/BaseQuery.html): Immutable query base with filtering, pagination, loading, and execution - [NamespaceQuery](https://github.com/NSLS2/recap/reference/NamespaceQuery.html): Query namespaces, including local and effective metadata filters - [ResourceQuery](https://github.com/NSLS2/recap/reference/ResourceQuery.html): Query resources, properties, templates, and parent relationships - [ResourceTemplateQuery](https://github.com/NSLS2/recap/reference/ResourceTemplateQuery.html): Query resource templates and optionally hydrate child relationships - [ProcessTemplateQuery](https://github.com/NSLS2/recap/reference/ProcessTemplateQuery.html): Query process templates and optionally hydrate steps and slots - [ProcessRunQuery](https://github.com/NSLS2/recap/reference/ProcessRunQuery.html): Query process runs with optional steps, resources, and parameters #### Builders > Context-managed resource and process builders. - [ResourceTemplateBuilder](https://github.com/NSLS2/recap/reference/ResourceTemplateBuilder.html) - [ResourceBuilder](https://github.com/NSLS2/recap/reference/ResourceBuilder.html) - [ProcessTemplateBuilder](https://github.com/NSLS2/recap/reference/ProcessTemplateBuilder.html): Builder for process templates, resource slots, and step templates - [StepTemplateBuilder](https://github.com/NSLS2/recap/reference/StepTemplateBuilder.html): Scoped editor for one step's parameter groups and resource bindings - [ProcessRunBuilder](https://github.com/NSLS2/recap/reference/ProcessRunBuilder.html): Builder for process-run assignments, parameters, and child steps - [AttributeGroupBuilder](https://github.com/NSLS2/recap/reference/AttributeGroupBuilder.html) #### Models and Lifecycle > Public schemas, lifecycle state, directions, and copy options. - [LifecycleStatus](https://github.com/NSLS2/recap/reference/LifecycleStatus.html): Monotonic lifecycle state for persisted RECAP entities - [Direction](https://github.com/NSLS2/recap/reference/Direction.html): Direction of resource flow through a process step - [validate_transition](https://github.com/NSLS2/recap/reference/validate_transition.html): Validate lifecycle transition, allowing idempotent same-state updates - [NamespaceRef](https://github.com/NSLS2/recap/reference/NamespaceRef.html): Lightweight namespace identity used in relationships and query results - [NamespaceContext](https://github.com/NSLS2/recap/reference/NamespaceContext.html): Active namespace scope attached to client queries and writes - [NamespaceSchema](https://github.com/NSLS2/recap/reference/NamespaceSchema.html): Persisted namespace with lifecycle, hierarchy, and metadata fields - [ResourceTypeSchema](https://github.com/NSLS2/recap/reference/ResourceTypeSchema.html): A type tag associated with a resource or resource template - [ResourceCopyChanges](https://github.com/NSLS2/recap/reference/ResourceCopyChanges.html): Property changes applied while copying a resource - [ResourceCopyOptions](https://github.com/NSLS2/recap/reference/ResourceCopyOptions.html): Name, parent, and property overrides for a resource copy operation - [ResourceTemplateRef](https://github.com/NSLS2/recap/reference/ResourceTemplateRef.html): Full blueprint for a category of resources - [ResourceTemplateSchema](https://github.com/NSLS2/recap/reference/ResourceTemplateSchema.html): Full blueprint for a category of resources - [ResourceRef](https://github.com/NSLS2/recap/reference/ResourceRef.html): A concrete resource instance created from a :class:`ResourceTemplateSchema` - [ResourceSchema](https://github.com/NSLS2/recap/reference/ResourceSchema.html): A concrete resource instance created from a :class:`ResourceTemplateSchema` - [ResourceAssignmentSchema](https://github.com/NSLS2/recap/reference/ResourceAssignmentSchema.html): Represents the assignment of a resource to a slot in a process run - [ProcessTemplateRef](https://github.com/NSLS2/recap/reference/ProcessTemplateRef.html): Blueprint for a workflow, defining its ordered steps and resource slots - [ProcessTemplateSchema](https://github.com/NSLS2/recap/reference/ProcessTemplateSchema.html): Blueprint for a workflow, defining its ordered steps and resource slots - [ProcessRunRef](https://github.com/NSLS2/recap/reference/ProcessRunRef.html): A concrete execution of a :class:`ProcessTemplateSchema` - [ProcessRunSchema](https://github.com/NSLS2/recap/reference/ProcessRunSchema.html): A concrete execution of a :class:`ProcessTemplateSchema` - [StepTemplateRef](https://github.com/NSLS2/recap/reference/StepTemplateRef.html): Blueprint for a single workflow step within a process template - [StepTemplateSchema](https://github.com/NSLS2/recap/reference/StepTemplateSchema.html): Blueprint for a single workflow step within a process template - [StepSchema](https://github.com/NSLS2/recap/reference/StepSchema.html): A concrete step instance within a :class:`~recap.schemas.process.ProcessRunSchema` - [ParameterSchema](https://github.com/NSLS2/recap/reference/ParameterSchema.html): A parameter group instance attached to a step - [AttributeTemplateSchema](https://github.com/NSLS2/recap/reference/AttributeTemplateSchema.html): Persisted blueprint for a single typed attribute - [AttributeGroupRef](https://github.com/NSLS2/recap/reference/AttributeGroupRef.html): A named group of :class:`AttributeTemplateSchema` instances - [AttributeGroupTemplateSchema](https://github.com/NSLS2/recap/reference/AttributeGroupTemplateSchema.html): A named group of :class:`AttributeTemplateSchema` instances - [AttributeValueSchema](https://github.com/NSLS2/recap/reference/AttributeValueSchema.html): A single stored attribute value with an optional physical unit - [AttributeTemplateValidator](https://github.com/NSLS2/recap/reference/AttributeTemplateValidator.html): Transient validator for a raw attribute definition supplied via the builder API