{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/indiacos-com/json-schema/indiacos-com-gst-schema.json",
  "title": "Gst",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/indiacos-com-openapi.json#/components/schemas/Gst",
  "type": "object",
  "properties": {
    "gstin": {
      "type": "string"
    },
    "legal_name": {
      "type": "string"
    },
    "trade_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "pan": {
      "type": "string"
    },
    "pan_holder_type": {
      "type": "string"
    },
    "constitution": {
      "type": "string"
    },
    "taxpayer_type": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "registration_date": {
      "type": "string",
      "format": "date"
    },
    "nature_of_business": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "address": {
      "type": "object",
      "description": "Principal place of business. The GST portal publishes it as one line (full); city, district and pincode are read from it. street repeats full for older clients.",
      "properties": {
        "full": {
          "type": [
            "string",
            "null"
          ]
        },
        "street": {
          "type": [
            "string",
            "null"
          ]
        },
        "locality": {
          "type": [
            "string",
            "null"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "district": {
          "type": [
            "string",
            "null"
          ]
        },
        "state": {
          "type": [
            "string",
            "null"
          ]
        },
        "state_code": {
          "type": "string"
        },
        "pincode": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "additional_addresses": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Additional places of business. The public GST portal does not publish them, so this is empty for now."
    },
    "jurisdiction": {
      "type": "object",
      "description": "centre and state as the portal writes them, and the same split into named parts (zone, commissionerate, division, range; state, district, ward ...)",
      "properties": {
        "centre": {
          "type": [
            "string",
            "null"
          ]
        },
        "state": {
          "type": [
            "string",
            "null"
          ]
        },
        "centre_detail": {
          "type": [
            "object",
            "null"
          ]
        },
        "state_detail": {
          "type": [
            "object",
            "null"
          ]
        }
      }
    },
    "core_business_activity": {
      "type": [
        "object",
        "null"
      ],
      "description": "Nature of core business activity",
      "properties": {
        "code": {
          "type": "string",
          "description": "MFT, SPO, TRD:TRR, TRD:TWD"
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "aadhaar_authenticated_on": {
      "type": [
        "string",
        "null"
      ],
      "format": "date"
    },
    "profile": {
      "type": "object",
      "description": "completeness: full once the record has been read from the GST portal, basic while only the GSTIN and name are on record. A basic record is read live during the call (waits up to ~25 s); refreshing: true means it is still being read - retry in a minute.",
      "properties": {
        "completeness": {
          "type": "string",
          "enum": [
            "full",
            "basic"
          ]
        },
        "refreshing": {
          "type": "boolean"
        },
        "last_read_from_portal": {
          "type": [
            "string",
            "null"
          ]
        },
        "note": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "same_pan_registrations": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "count": {
          "type": "integer"
        },
        "api": {
          "type": "string"
        }
      }
    },
    "trademarks": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "total": {
          "type": "integer"
        },
        "api": {
          "type": "string"
        }
      }
    },
    "court_cases_api": {
      "type": "string"
    },
    "turnover_band": {
      "type": [
        "object",
        "null"
      ]
    },
    "contact": {
      "type": "object",
      "description": "email and mobile: masked, or in full (with full: true) on keys with contact access",
      "properties": {
        "email": {
          "type": [
            "string",
            "null"
          ]
        },
        "mobile": {
          "type": [
            "string",
            "null"
          ]
        },
        "full": {
          "type": "boolean"
        }
      }
    },
    "cancellation_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date"
    },
    "aadhaar_authenticated": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "einvoice_enabled": {
      "type": "boolean"
    },
    "flags": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "company": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "cin": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "api": {
          "type": "string"
        }
      }
    },
    "return_filings": {
      "type": "array",
      "description": "GST returns on record. period is a month name, a quarter (QRMP filers file in the last month of the quarter) or Annual; null period = a year-level record.",
      "items": {
        "type": "object",
        "properties": {
          "form": {
            "type": "string"
          },
          "financial_year": {
            "type": "string"
          },
          "period": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "filed_on": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          }
        }
      }
    },
    "portal_checks": {
      "type": [
        "object",
        "null"
      ],
      "description": "From the GST portal taxpayer profile, when we have read it. Booleans are null when the portal gives no value.",
      "properties": {
        "checked_on": {
          "type": "string",
          "format": "date"
        },
        "field_visit_conducted": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "aadhaar_authenticated": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "aadhaar_authenticated_on": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "ekyc_verified": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "einvoice_enabled": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "core_business": {
          "type": [
            "string",
            "null"
          ],
          "description": "Portal code: MFT manufacturer, TRD:TRR retail trader, TRD:TWD wholesale trader, SPO service provider"
        }
      }
    },
    "shared_address": {
      "type": [
        "object",
        "null"
      ]
    },
    "regulatory": {
      "$ref": "#/$defs/Regulatory"
    },
    "retrieved_on": {
      "type": "string"
    },
    "url": {
      "type": "string"
    }
  },
  "$defs": {
    "Regulatory": {
      "type": "array",
      "description": "Entries in regulator lists carrying its CIN, PAN or DIN: IBBI insolvency announcements, RBI NBFC/ARC registration, securities-market orders (SEBI and other authorities, from the exchange list), ROC strike-off lists. Also on /company and /director responses.",
      "items": {
        "type": "object",
        "properties": {
          "list": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "name_in_list": {
            "type": [
              "string",
              "null"
            ]
          },
          "cin": {
            "type": [
              "string",
              "null"
            ]
          },
          "pan": {
            "type": [
              "string",
              "null"
            ]
          },
          "din": {
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "until": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "period": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object"
          }
        }
      }
    }
  }
}