IaBulaDocs API V1Português
Browse documentation
API Reference

Medication and source change tracking

.md

Synchronize your integration using /v1/changes, since and next_cursor without confusing source changes with regulatory conclusions.

On this page

Read published changes#

GET /v1/changes returns published events with data and next_cursor. Omit since on the first request. limit accepts 1–100, default 50. Ordering by occurred_at and UUID provides stable pagination of available history.

bash
curl --fail-with-body --get "$IABULA_API_BASE/v1/changes" \
  --header "X-API-Key: $IABULA_API_KEY" \
  --data-urlencode "limit=50"

Continue with since#

Send the returned next_cursor as since on the next request. Keep the cursor after an empty data list so polling can resume later. Do not reuse search cursors here. Persist a cursor only after successfully processing its events.

bash
curl --fail-with-body --get "$IABULA_API_BASE/v1/changes" \
  --header "X-API-Key: $IABULA_API_KEY" \
  --data-urlencode "since=$IABULA_CURSOR" \
  --data-urlencode "limit=50"

An observed change is not a clinical conclusion#

Canonical events use created, updated or withdrawn. Source comparisons may use observed_in_source, changed_in_source and removed_from_source. Interpretation depends on entity_type, before, after and evidence.

Defensive synchronization#

Use the event ID to prevent duplicate processing in your integration. Inspect source evidence, version, URL, source_record_id and source_run_id when available. Delivery uses HTTP polling; V1 does not document change webhooks.

GET /v1/changes#

Contract and types
ParameterLocationRequiredType and bounds
sincequerynostring; maxLength=2048 | null
limitquerynointeger; minimum=1, maximum=100, default=50
Contract and types
HTTPContent-TypeSchema
200application/jsonChangePage
400application/jsonProblem
401application/jsonProblem
403application/jsonProblem
429application/jsonProblem
500application/jsonProblem
503application/jsonProblem
422application/jsonHTTPValidationError

OpenAPI contract fields#

Contract and types
Schema.fieldType and boundsRequired
ChangeEvidence.classstringyes
ChangeEvidence.sourcestring | nullno
ChangeEvidence.datasetstring | nullno
ChangeEvidence.retrieved_atstring (date-time) | nullno
ChangeEvidence.source_versionstringyes
ChangeEvidence.source_record_idstring | nullno
ChangeEvidence.source_run_idstring | nullno
ChangeEvidence.attributestring | nullno
ChangeEvidence.rule_versionstring | nullno
ChangeEvidence.source_urlstringyes
ChangePage.dataarray<ChangeRecord>yes
ChangePage.next_cursorstring | nullyes
ChangeRecord.idstring (uuid)yes
ChangeRecord.entity_typestringyes
ChangeRecord.entity_idstring (uuid)yes
ChangeRecord.operationstring: created, updated, withdrawn, observed_in_source, changed_in_source, removed_from_sourceyes
ChangeRecord.beforeobject | nullno
ChangeRecord.afterobject | nullno
ChangeRecord.occurred_atstring (date-time)yes
ChangeRecord.evidenceChangeEvidenceyes
HTTPValidationError.detailarray<ValidationError>no
Problem.typestringyes
Problem.titlestringyes
Problem.statusintegeryes
Problem.codestringyes
Problem.detailstring | nullno
Problem.request_idstringyes
ValidationError.locarray<string | integer>yes
ValidationError.msgstringyes
ValidationError.typestringyes
ValidationError.inputobjectno
ValidationError.ctxobjectno