{
    "info": {
        "name": "Astrosia Accounts API",
        "description": "Runnable suite for the Accounts REST API. Set `token` from Settings \u2192 API, then Run collection.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "variable": [
        {
            "key": "baseUrl",
            "value": "https://accounts.astrosia.tech/api/v1"
        },
        {
            "key": "token",
            "value": "acc_live_replace_me"
        },
        {
            "key": "partyId",
            "value": "1"
        },
        {
            "key": "itemId",
            "value": "1"
        },
        {
            "key": "invoiceId",
            "value": "1"
        }
    ],
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{token}}",
                "type": "string"
            }
        ]
    },
    "item": [
        {
            "name": "Auth & company",
            "item": [
                {
                    "name": "Ping",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/ping"
                    }
                },
                {
                    "name": "Company",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/company"
                    }
                }
            ]
        },
        {
            "name": "Catalog",
            "item": [
                {
                    "name": "Currencies",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/currencies"
                    }
                },
                {
                    "name": "Taxes",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/taxes"
                    }
                },
                {
                    "name": "Units",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/units"
                    }
                },
                {
                    "name": "Warehouses",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/warehouses"
                    }
                },
                {
                    "name": "Payment types",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/payment-types"
                    }
                },
                {
                    "name": "Item categories",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/item-categories"
                    }
                },
                {
                    "name": "HSN search",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "  pm.expect(json.data).to.be.an('array');",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/hsn?q=consulting"
                    }
                }
            ]
        },
        {
            "name": "Parties",
            "item": [
                {
                    "name": "List parties",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/parties?type=customer"
                    }
                },
                {
                    "name": "Create party",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('created', function () {",
                                    "  pm.response.to.have.status(201);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "  pm.expect(json.data.id).to.be.a('number');",
                                    "});",
                                    "if (pm.response.json().data && pm.response.json().data.id) { pm.collectionVariables.set('partyId', String(pm.response.json().data.id)); }",
                                    ""
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/parties",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"first_name\": \"Asha\",\n    \"last_name\": \"Sen\",\n    \"party_type\": \"customer\",\n    \"mobile\": \"9876543210\",\n    \"tax_number\": \"19AAAAA0000A1Z5\"\n}"
                        }
                    }
                },
                {
                    "name": "Get party",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/parties/{{partyId}}"
                    }
                }
            ]
        },
        {
            "name": "Items",
            "item": [
                {
                    "name": "List items",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/items"
                    }
                },
                {
                    "name": "Create item",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('created', function () {",
                                    "  pm.response.to.have.status(201);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "  pm.expect(json.data.id).to.be.a('number');",
                                    "});",
                                    "if (pm.response.json().data && pm.response.json().data.id) { pm.collectionVariables.set('itemId', String(pm.response.json().data.id)); }",
                                    ""
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/items",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"GST Consultation\",\n    \"is_service\": true,\n    \"hsn\": \"9983\",\n    \"sale_price\": 10000\n}"
                        }
                    }
                },
                {
                    "name": "Get item",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/items/{{itemId}}"
                    }
                }
            ]
        },
        {
            "name": "Invoices",
            "item": [
                {
                    "name": "List invoices",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/invoices"
                    }
                },
                {
                    "name": "Create invoice",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('created', function () {",
                                    "  pm.response.to.have.status(201);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "  pm.expect(json.data.id).to.be.a('number');",
                                    "});",
                                    "if (pm.response.json().data && pm.response.json().data.id) { pm.collectionVariables.set('invoiceId', String(pm.response.json().data.id)); }",
                                    ""
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/invoices",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"party_id\": \"{{partyId}}\",\n    \"sale_date\": \"2026-08-23\",\n    \"gst_supply_type\": \"domestic\",\n    \"lines\": [\n        {\n            \"item_id\": \"{{itemId}}\",\n            \"quantity\": 1,\n            \"unit_price\": 10000\n        }\n    ]\n}"
                        }
                    }
                },
                {
                    "name": "Get invoice",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/invoices/{{invoiceId}}"
                    }
                },
                {
                    "name": "Pay invoice",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('ok is true', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  const json = pm.response.json();",
                                    "  pm.expect(json.ok).to.eql(true);",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": "{{baseUrl}}/invoices/{{invoiceId}}/payments",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"amount\": 11800,\n    \"note\": \"UPI\"\n}"
                        }
                    }
                },
                {
                    "name": "Download invoice PDF",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('pdf downloaded', function () {",
                                    "  pm.response.to.have.status(200);",
                                    "  pm.expect(pm.response.headers.get('Content-Type') || '').to.include('pdf');",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Authorization",
                                "value": "Bearer {{token}}"
                            },
                            {
                                "key": "Accept",
                                "value": "application/pdf"
                            }
                        ],
                        "url": "{{baseUrl}}/invoices/{{invoiceId}}/pdf"
                    }
                }
            ]
        }
    ]
}
