Eng: Add Bruno collection for manual API exploration - #231
Merged
Conversation
There was a problem hiding this comment.
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
CapabilityStatementSettingsand 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.
Requests for CRUD, search, history, $validate/$expand and the scoped maintenance/import operations, with environments for local and public targets.
kennethmyhra
approved these changes
Aug 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a Bruno collection for FHIR server API endpoints, covering resource creation, validation, history, and operations.