generated: '2026-10-18' method: derived generator: derive-data-model.py source: - openapi/gstinapi-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 8 entities_in_spec: 8 relationships: 2 entities: - name: BulkJob fields: 11 description: A submitted list and how far through it we are. - name: BulkJobEnvelope fields: 3 - name: BulkJobRequest fields: 3 description: Supply exactly one of `gstins` or `text`. - name: BulkResultRow fields: 6 description: One submitted row and what became of it. - name: Error fields: 3 - name: Pagination fields: 5 - name: TaxpayerEnvelope fields: 4 description: 'The government data source payload, passed through verbatim. Check `taxpayer_data.status_code` — `1` is a live registration, `0` means no registration exists for this number and carries an error code ' - name: TaxpayerProfile fields: 19 description: A verified registration, normalised. This is the shape bulk results carry; the single endpoint returns the raw envelope instead. relationships: - from: BulkJobEnvelope to: BulkJob type: has_one via: job - from: BulkResultRow to: TaxpayerProfile type: has_one via: data