Skip to content

Eng: Add Bruno collection for manual API exploration - #231

Merged
losolio merged 1 commit into
incendilabs:mainfrom
losol:feature/bruno
Aug 1, 2026
Merged

Eng: Add Bruno collection for manual API exploration#231
losolio merged 1 commit into
incendilabs:mainfrom
losol:feature/bruno

Conversation

@losolio

@losolio losolio commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

This pull request introduces a Bruno collection for FHIR server API endpoints, covering resource creation, validation, history, and operations.

Copilot AI review requested due to automatic review settings August 1, 2026 17:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Bruno collection under eng/bruno for manual exploration of the Ignis FHIR API, and introduces a configurable deployment notice that is injected into /fhir/metadata as CapabilityStatement.implementation.description (including Helm + docs + a regression test).

Changes:

  • Add CapabilityStatementSettings and enrich Spark’s CapabilityStatement with a configurable implementation description.
  • Wire settings via ASP.NET Core options + Helm values/env var, and document the new configuration key.
  • Add a Bruno collection (requests + environments) covering auth, CRUD/search, validation, history, and operations.

Reviewed changes

Copilot reviewed 86 out of 86 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/Ignis.Api.Tests/FhirControllerTests.cs Adds integration coverage asserting the deployment notice appears in /fhir/metadata.
src/Ignis.Api/Services/Validation/ProfileAwareCapabilityStatementService.cs Enriches Spark’s CapabilityStatement with implementation description + supportedProfile advertising.
src/Ignis.Api/Program.cs Registers options binding for CapabilityStatementSettings.
src/Ignis.Api/Extensions/CapabilityStatementExtensions.cs Passes CapabilityStatementSettings into the capability statement service wrapper.
src/Ignis.Api/Configuration/CapabilityStatementSettings.cs New options type defining the default deployment notice text.
infra/helm/charts/app/values.yaml Adds chart values for capability statement implementation description.
infra/helm/charts/app/templates/api-deployment.yaml Wires the capability statement description into the API container via env var.
eng/bruno/README.md Documents how to use the Bruno collection and obtain tokens/scopes.
eng/bruno/Ignis/Maintenance/rebuild-index.bru Bruno request for $rebuild-index maintenance operation.
eng/bruno/Ignis/Maintenance/clear-store.bru Bruno request for $clear-store destructive maintenance operation.
eng/bruno/Ignis/Import/archive-import.bru Bruno request to upload an archive for import.
eng/bruno/Ignis/Import/archive-import-limits.bru Bruno request to read configured archive import limits.
eng/bruno/Ignis/health.bru Bruno request for anonymous health probe.
eng/bruno/Ignis/folder.bru Groups Ignis-specific (non-core) endpoints for Bruno navigation.
eng/bruno/Ignis/Conformance/profiles.bru Bruno request to list supported profiles via $profiles.
eng/bruno/Ignis/Conformance/packages.bru Bruno request to list loaded packages via $packages.
eng/bruno/Ignis/Auth/get-token.bru Bruno request to fetch an OAuth2 client-credentials token and store it as a variable.
eng/bruno/Fhir/Validation/validate-questionnaire-cross-version-profile.bru Bruno validation example for a cross-version profile failure mode.
eng/bruno/Fhir/Validation/validate-patient-valid.bru Bruno validation example for a valid Patient payload.
eng/bruno/Fhir/Validation/validate-patient-unresolvable-profile.bru Bruno validation example for an unresolvable profile canonical.
eng/bruno/Fhir/Validation/validate-patient-no-basis-fnr-invalid.bru Bruno validation example against a no-basis profile with an invalid identifier slice.
eng/bruno/Fhir/Validation/validate-patient-instance.bru Bruno instance-level $validate example.
eng/bruno/Fhir/Validation/validate-patient-base-fnr-ok.bru Bruno validation example that passes against base Patient.
eng/bruno/Fhir/Validation/validate-patient-against-profile.bru Bruno validation example using explicit ?profile=.
eng/bruno/Fhir/Validation/folder.bru Groups validation requests in Bruno.
eng/bruno/Fhir/Terminology/folder.bru Groups terminology requests in Bruno.
eng/bruno/Fhir/Terminology/expand-stored.bru Bruno $expand against a stored ValueSet by id (GET).
eng/bruno/Fhir/Terminology/expand-stored-conflicting-url.bru Bruno $expand example demonstrating invalid conflicting url body (expect 400).
eng/bruno/Fhir/Terminology/expand-from-body.bru Bruno $expand via Parameters body.
eng/bruno/Fhir/Terminology/expand-by-url.bru Bruno $expand by canonical URL (GET).
eng/bruno/Fhir/Terminology/create-valueset.bru Bruno request to create a ValueSet and capture its id.
eng/bruno/Fhir/Resources/Task/update-task-complete.bru Bruno example to update a Task to completed.
eng/bruno/Fhir/Resources/Task/search-tasks-for-patient.bru Bruno example to search Tasks for a Patient.
eng/bruno/Fhir/Resources/Task/folder.bru Groups Task examples in Bruno.
eng/bruno/Fhir/Resources/Task/create-task-valid.bru Bruno example to create a valid Task and capture its id.
eng/bruno/Fhir/Resources/Task/create-task-invalid-status.bru Bruno negative example: invalid Task.status (expect 400).
eng/bruno/Fhir/Resources/QuestionnaireResponse/folder.bru Groups QuestionnaireResponse examples in Bruno.
eng/bruno/Fhir/Resources/QuestionnaireResponse/create-questionnaire-response-valid.bru Bruno example to create a valid QuestionnaireResponse.
eng/bruno/Fhir/Resources/QuestionnaireResponse/create-questionnaire-response-invalid-status.bru Bruno negative example: invalid QuestionnaireResponse.status (expect 400).
eng/bruno/Fhir/Resources/Questionnaire/read-questionnaire.bru Bruno example to read a Questionnaire by id.
eng/bruno/Fhir/Resources/Questionnaire/folder.bru Groups Questionnaire examples in Bruno.
eng/bruno/Fhir/Resources/Questionnaire/create-questionnaire-valid.bru Bruno example to create a valid Questionnaire and capture its id.
eng/bruno/Fhir/Resources/Questionnaire/create-questionnaire-invalid-status.bru Bruno negative example: invalid Questionnaire.status (expect 400).
eng/bruno/Fhir/Resources/Practitioner/search-practitioners.bru Bruno example to search Practitioner by name.
eng/bruno/Fhir/Resources/Practitioner/folder.bru Groups Practitioner examples in Bruno.
eng/bruno/Fhir/Resources/Practitioner/create-practitioner-valid.bru Bruno example to create a valid Practitioner and capture its id.
eng/bruno/Fhir/Resources/Practitioner/create-practitioner-invalid-gender.bru Bruno negative example: invalid Practitioner.gender (expect 400).
eng/bruno/Fhir/Resources/Patient/update-patient-invalid-gender.bru Bruno negative example: invalid Patient.gender on update (expect 400).
eng/bruno/Fhir/Resources/Patient/search-patients.bru Bruno example: Patient search with _count.
eng/bruno/Fhir/Resources/Patient/search-patients-post.bru Bruno example: Patient search via POST _search.
eng/bruno/Fhir/Resources/Patient/read-patient.bru Bruno example: read Patient by id.
eng/bruno/Fhir/Resources/Patient/patch-patient.bru Bruno example: FHIRPath patch via Parameters.
eng/bruno/Fhir/Resources/Patient/folder.bru Groups Patient examples (success + parser failures) in Bruno.
eng/bruno/Fhir/Resources/Patient/delete-patient.bru Bruno example: delete Patient by id.
eng/bruno/Fhir/Resources/Patient/create-patient-wrong-element-order-xml.bru Bruno negative example: order-sensitive XML parse failure (expect 400).
eng/bruno/Fhir/Resources/Patient/create-patient-valid.bru Bruno example: create Patient and capture id/version.
eng/bruno/Fhir/Resources/Patient/create-patient-valid-xml.bru Bruno example: create Patient via XML.
eng/bruno/Fhir/Resources/Patient/create-patient-unknown-element.bru Bruno negative example: strict parser rejects unknown JSON property.
eng/bruno/Fhir/Resources/Patient/create-patient-multiple-invalid-elements.bru Bruno negative example: multiple invalid elements in one payload (expect 400).
eng/bruno/Fhir/Resources/Patient/create-patient-missing-resourcetype.bru Bruno negative example: missing resourceType (expect 400).
eng/bruno/Fhir/Resources/Patient/create-patient-invalid-gender.bru Bruno negative example: invalid AdministrativeGender code (expect 400).
eng/bruno/Fhir/Resources/Patient/create-patient-invalid-gender-xml.bru Bruno negative example: invalid gender code via XML (expect 400).
eng/bruno/Fhir/Resources/Patient/create-patient-garbage-xml.bru Bruno negative example: non-XML body with XML content-type (expect 400).
eng/bruno/Fhir/Resources/Patient/create-patient-garbage-json.bru Bruno negative example: non-JSON body with JSON content-type (expect 400).
eng/bruno/Fhir/Resources/Organization/search-organizations.bru Bruno example to search Organization by name.
eng/bruno/Fhir/Resources/Organization/folder.bru Groups Organization examples in Bruno.
eng/bruno/Fhir/Resources/Organization/create-organization-valid.bru Bruno example to create Organization and capture its id.
eng/bruno/Fhir/Resources/Observation/search-observations-for-patient.bru Bruno example to search Observations for a Patient.
eng/bruno/Fhir/Resources/Observation/folder.bru Groups Observation examples in Bruno.
eng/bruno/Fhir/Resources/Observation/create-observation-valid.bru Bruno example to create an Observation.
eng/bruno/Fhir/Resources/Observation/create-observation-invalid-status.bru Bruno negative example: invalid Observation.status (expect 400).
eng/bruno/Fhir/Resources/Observation/create-observation-invalid-quantity.bru Bruno negative example: invalid Quantity value type (expect 400).
eng/bruno/Fhir/Resources/folder.bru Groups resource CRUD/search examples in Bruno.
eng/bruno/Fhir/Resources/Encounter/folder.bru Groups Encounter examples in Bruno.
eng/bruno/Fhir/Resources/Encounter/create-encounter-valid.bru Bruno example to create an Encounter.
eng/bruno/Fhir/Resources/Encounter/create-encounter-invalid-status.bru Bruno negative example: invalid Encounter.status (expect 400).
eng/bruno/Fhir/Operations/meta-read.bru Bruno example for $meta read operation.
eng/bruno/Fhir/Operations/folder.bru Groups operation examples in Bruno.
eng/bruno/Fhir/Operations/everything-instance.bru Bruno example for $everything instance operation.
eng/bruno/Fhir/History/version-read.bru Bruno example to read a specific version by _history/{vid}.
eng/bruno/Fhir/History/type-history.bru Bruno example for type-level history.
eng/bruno/Fhir/History/system-history.bru Bruno example for system-level history.
eng/bruno/Fhir/History/instance-history.bru Bruno example for instance-level history.
eng/bruno/Fhir/History/folder.bru Groups history examples in Bruno.
eng/bruno/Fhir/folder.bru Groups FHIR API examples in Bruno.
eng/bruno/Fhir/capability-statement.bru Bruno request for /metadata CapabilityStatement.
eng/bruno/environments/spark-public.bru Bruno environment for public Spark endpoint.
eng/bruno/environments/spark-local.bru Bruno environment for local Spark endpoint.
eng/bruno/environments/ignis-public.bru Bruno environment for public Ignis endpoint + token config.
eng/bruno/environments/ignis-local.bru Bruno environment for local Ignis endpoint + token config.
eng/bruno/environments/hapi-public.bru Bruno environment for public HAPI endpoint.
eng/bruno/collection.bru Collection-level headers/auth + top-level collection docs.
eng/bruno/bruno.json Declares the Bruno collection metadata.
docs/server/api-configuration.md Documents CapabilityStatementSettings and its default/behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread eng/bruno/Fhir/capability-statement.bru
Comment thread eng/bruno/README.md Outdated
Requests for CRUD, search, history, $validate/$expand and the scoped
maintenance/import operations, with environments for local and public
targets.
@losolio
losolio merged commit 43f38ae into incendilabs:main Aug 1, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants