Skip to navigation

Programs

Programs describe published initiatives and research or acquisition programs. Retrieve them with GET /api/v1/datasets/programs; read a returned item with GET /api/v1/datasets/programs/{record_id}.

Find a program

curl --fail-with-body --get \
'https://app.defdex.io/api/v1/datasets/programs' \
--header "Authorization: Bearer $DEFDEX_API_KEY" \
--data-urlencode 'q=SBIR' \
--data-urlencode 'limit=10'

Use exact filters for a known id, slug, code, agency_id, parent_id, kind, status or another published field. q searches name and description; it is not a code-prefix, fuzzy or ranked search. An exact code match may return multiple programs; inspect the agency and identity before selecting one.

import { DefDexClient } from '@defdex/sdk';
const api = new DefDexClient();
const programs = await api.list('programs', { q: 'SBIR', limit: 10 });
if (programs.data.length) {
const programId = programs.data[0].attributes.id;
const participants = await api.list('program-participants', {
filters: { program_id: programId }, limit: 25
});
console.log(participants.data);
}

Use the returned attributes.id as program_id for these collections:

DatasetPublished relationship or measure
program-participantsOrganization participants, roles, confidence and as-of date
program-operatorsOperators associated with a program
program-systemsSystems associated with a program
program-facilitiesAssociated facilities
program-obligationsObligated USD by fiscal year
program-obligation-totalsPublished obligation totals
program-award-membershipsExact award-key memberships
program-award-evidenceSupporting program/award evidence
awardsPublished award rows with a direct program_id

The catalog lists all fields. Relationship completeness varies: an empty result is not proof that a program has no participants, funding or awards. Read program-obligation-method for published methodology and keep evidence and membership basis with any total. Do not add direct award rows, membership totals and aggregate totals together: those can represent overlapping dollars.

Programs use organization UUIDs in agency_id, program UUIDs in parent_id and stable record IDs for detail retrieval. There is no automatic relationship expansion or server-side join endpoint. Traverse exact published keys in separate requests.