agmarknet 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. agmarknet-0.1.0/.gitignore +19 -0
  2. agmarknet-0.1.0/API_SPEC.md +746 -0
  3. agmarknet-0.1.0/BENCHMARKS.md +303 -0
  4. agmarknet-0.1.0/CHANGELOG.md +69 -0
  5. agmarknet-0.1.0/CONTRIBUTING.md +201 -0
  6. agmarknet-0.1.0/DISCOVERIES.md +527 -0
  7. agmarknet-0.1.0/LICENSE +21 -0
  8. agmarknet-0.1.0/Notebook.ipynb +0 -0
  9. agmarknet-0.1.0/PKG-INFO +116 -0
  10. agmarknet-0.1.0/README.md +68 -0
  11. agmarknet-0.1.0/REVERSE_ENGINEERING_LOG.md +668 -0
  12. agmarknet-0.1.0/ROADMAP.md +626 -0
  13. agmarknet-0.1.0/SDK_DESIGN.md +53 -0
  14. agmarknet-0.1.0/agmarknet/__init__.py +23 -0
  15. agmarknet-0.1.0/agmarknet/client.py +250 -0
  16. agmarknet-0.1.0/agmarknet/constants.py +35 -0
  17. agmarknet-0.1.0/agmarknet/dates.py +45 -0
  18. agmarknet-0.1.0/agmarknet/exceptions.py +36 -0
  19. agmarknet-0.1.0/agmarknet/filters.py +107 -0
  20. agmarknet-0.1.0/agmarknet/historical.py +162 -0
  21. agmarknet-0.1.0/agmarknet/lookup.py +404 -0
  22. agmarknet-0.1.0/agmarknet/models.py +147 -0
  23. agmarknet-0.1.0/agmarknet/pagination.py +60 -0
  24. agmarknet-0.1.0/agmarknet/py.typed +1 -0
  25. agmarknet-0.1.0/agmarknet/report.py +79 -0
  26. agmarknet-0.1.0/agmarknet/session.py +111 -0
  27. agmarknet-0.1.0/agmarknet/validators.py +90 -0
  28. agmarknet-0.1.0/examples/basic_usage.py +20 -0
  29. agmarknet-0.1.0/nr.ipynb +0 -0
  30. agmarknet-0.1.0/pyproject.toml +58 -0
  31. agmarknet-0.1.0/test_api.py +121 -0
  32. agmarknet-0.1.0/tests/test_client.py +325 -0
  33. agmarknet-0.1.0/tests/test_dates.py +39 -0
  34. agmarknet-0.1.0/tests/test_filters.py +53 -0
  35. agmarknet-0.1.0/tests/test_historical.py +47 -0
  36. agmarknet-0.1.0/tests/test_lookup.py +88 -0
  37. agmarknet-0.1.0/tests/test_models.py +33 -0
  38. agmarknet-0.1.0/tests/test_pagination.py +52 -0
  39. agmarknet-0.1.0/tests/test_report.py +48 -0
@@ -0,0 +1,19 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+
5
+ .pytest_cache/
6
+ .ruff_cache/
7
+ .mypy_cache/
8
+ .pyright/
9
+
10
+ .venv/
11
+ venv/
12
+ env/
13
+
14
+ build/
15
+ dist/
16
+ *.egg-info/
17
+
18
+ .coverage
19
+ htmlcov/
@@ -0,0 +1,746 @@
1
+ # AGMARKNET 2.0 API Specification (Unofficial)
2
+
3
+ **Project:** agmarknet Python SDK
4
+
5
+ **Status:** Reverse Engineered
6
+
7
+ **Version:** Draft 0.1
8
+
9
+ **Last Updated:** 2026-07-08
10
+
11
+ ---
12
+
13
+ # Overview
14
+
15
+ This document describes the official REST API used by the AGMARKNET 2.0 web portal.
16
+
17
+ The API is publicly accessible and currently requires:
18
+
19
+ - No authentication
20
+ - No API key
21
+ - No cookies
22
+ - No OAuth
23
+ - No JWT
24
+
25
+ The API is consumed by the official React frontend.
26
+
27
+ ---
28
+
29
+ # Base URLs
30
+
31
+ Website
32
+
33
+ https://agmarknet.gov.in
34
+
35
+ API
36
+
37
+ https://api.agmarknet.gov.in/v1
38
+
39
+ ---
40
+
41
+ # Technology Stack
42
+
43
+ Observed
44
+
45
+ Browser
46
+
47
+ React
48
+
49
+ Redux Toolkit
50
+
51
+ Axios
52
+
53
+ REST API
54
+
55
+ ---
56
+
57
+ # Authentication
58
+
59
+ Status
60
+
61
+ CONFIRMED
62
+
63
+ Authentication Required
64
+
65
+ NO
66
+
67
+ API Key
68
+
69
+ NO
70
+
71
+ Bearer Token
72
+
73
+ NO
74
+
75
+ Cookies
76
+
77
+ NO
78
+
79
+ CSRF
80
+
81
+ NO
82
+
83
+ ---
84
+
85
+ # Endpoints
86
+
87
+ ## GET
88
+
89
+ /daily-price-arrival/filters
90
+
91
+ Purpose
92
+
93
+ Returns all lookup tables required by the application.
94
+
95
+ Response
96
+
97
+ JSON
98
+
99
+ ---
100
+
101
+ ## POST
102
+
103
+ /daily-price-arrival/report
104
+
105
+ Purpose
106
+
107
+ Returns Daily Price and Arrival reports.
108
+
109
+ Response
110
+
111
+ JSON
112
+
113
+ Supports downloads.
114
+
115
+ ---
116
+
117
+ # Headers
118
+
119
+ Typical request
120
+
121
+ Accept: application/json
122
+ Content-Type: application/json
123
+ Origin: https://agmarknet.gov.in
124
+ Referer: https://agmarknet.gov.in/
125
+ User-Agent: Mozilla/5.0
126
+
127
+ No Authorization header required.
128
+
129
+ ---
130
+
131
+ # Filters Endpoint
132
+
133
+ Response
134
+
135
+ status
136
+
137
+ message
138
+
139
+ data
140
+
141
+ Inside data
142
+
143
+ cmdt_data
144
+
145
+ cmdt_group_data
146
+
147
+ state_data
148
+
149
+ district_data
150
+
151
+ market_data
152
+
153
+ variety_data
154
+
155
+ grade_data
156
+
157
+ type_data
158
+
159
+ range_data
160
+
161
+ note_data
162
+
163
+ ---
164
+
165
+ # Lookup Table Counts
166
+
167
+ Verified
168
+
169
+ Commodity Groups
170
+
171
+ 16
172
+
173
+ Commodities
174
+
175
+ 604
176
+
177
+ States
178
+
179
+ 37
180
+
181
+ Districts
182
+
183
+ 740
184
+
185
+ Markets
186
+
187
+ 4182
188
+
189
+ Varieties
190
+
191
+ 2133
192
+
193
+ Grades
194
+
195
+ 18
196
+
197
+ ---
198
+
199
+ # Commodity Groups
200
+
201
+ Returned by
202
+
203
+ cmdt_group_data
204
+
205
+ Contains
206
+
207
+ id
208
+
209
+ cmdt_grp_name
210
+
211
+ Examples
212
+
213
+ Vegetables
214
+
215
+ Fruits
216
+
217
+ Oilseeds
218
+
219
+ Cereals
220
+
221
+ Pulses
222
+
223
+ etc.
224
+
225
+ ---
226
+
227
+ # Commodities
228
+
229
+ Returned by
230
+
231
+ cmdt_data
232
+
233
+ Contains
234
+
235
+ id
236
+
237
+ cmdt_name
238
+
239
+ group id
240
+
241
+ etc.
242
+
243
+ Example
244
+
245
+ Tomato
246
+
247
+ ID 65
248
+
249
+ ---
250
+
251
+ # States
252
+
253
+ Returned by
254
+
255
+ state_data
256
+
257
+ Contains
258
+
259
+ state_id
260
+
261
+ state_name
262
+
263
+ ---
264
+
265
+ # Districts
266
+
267
+ Returned by
268
+
269
+ district_data
270
+
271
+ Contains
272
+
273
+ district_id
274
+
275
+ district_name
276
+
277
+ state_id
278
+
279
+ ---
280
+
281
+ # Markets
282
+
283
+ Returned by
284
+
285
+ market_data
286
+
287
+ Contains
288
+
289
+ market_id
290
+
291
+ market_name
292
+
293
+ district_id
294
+
295
+ ---
296
+
297
+ # Varieties
298
+
299
+ Returned by
300
+
301
+ variety_data
302
+
303
+ Contains
304
+
305
+ variety_id
306
+
307
+ variety_name
308
+
309
+ cmdt_id
310
+
311
+ Some are commodity-specific.
312
+
313
+ Some are global.
314
+
315
+ ---
316
+
317
+ # Grades
318
+
319
+ Returned by
320
+
321
+ grade_data
322
+
323
+ Contains
324
+
325
+ grade_id
326
+
327
+ grade_name
328
+
329
+ cmdt_id
330
+
331
+ ---
332
+
333
+ # Data Types
334
+
335
+ Confirmed
336
+
337
+ 100004
338
+
339
+ Price
340
+
341
+ 100005
342
+
343
+ Arrival
344
+
345
+ 100006
346
+
347
+ Both
348
+
349
+ ---
350
+
351
+ # Report Payload
352
+
353
+ Example
354
+
355
+ {
356
+ "from_date":"2021-01-01",
357
+ "to_date":"2021-12-31",
358
+
359
+ "data_type":"100004",
360
+
361
+ "group":"6",
362
+
363
+ "commodity":"65",
364
+
365
+ "state":"[16]",
366
+
367
+ "district":"[258]",
368
+
369
+ "market":"[100002]",
370
+
371
+ "grade":"[100003]",
372
+
373
+ "variety":"[100007]",
374
+
375
+ "page":"1",
376
+
377
+ "limit":"1000"
378
+ }
379
+
380
+ ---
381
+
382
+ # Parameters
383
+
384
+ from_date
385
+
386
+ YYYY-MM-DD
387
+
388
+ Required
389
+
390
+ ---
391
+
392
+ to_date
393
+
394
+ YYYY-MM-DD
395
+
396
+ Required
397
+
398
+ ---
399
+
400
+ data_type
401
+
402
+ 100004
403
+
404
+ 100005
405
+
406
+ 100006
407
+
408
+ Required
409
+
410
+ ---
411
+
412
+ group
413
+
414
+ Commodity Group ID
415
+
416
+ Required
417
+
418
+ ---
419
+
420
+ commodity
421
+
422
+ Commodity ID
423
+
424
+ Required
425
+
426
+ ---
427
+
428
+ state
429
+
430
+ JSON string array
431
+
432
+ Example
433
+
434
+ "[16]"
435
+
436
+ Supports multiple values.
437
+
438
+ ---
439
+
440
+ district
441
+
442
+ JSON string array
443
+
444
+ ---
445
+
446
+ market
447
+
448
+ JSON string array
449
+
450
+ ---
451
+
452
+ grade
453
+
454
+ JSON string array
455
+
456
+ ---
457
+
458
+ variety
459
+
460
+ JSON string array
461
+
462
+ ---
463
+
464
+ page
465
+
466
+ Page number
467
+
468
+ ---
469
+
470
+ limit
471
+
472
+ Rows per page
473
+
474
+ ---
475
+
476
+ download
477
+
478
+ Optional
479
+
480
+ Boolean
481
+
482
+ ---
483
+
484
+ download_type
485
+
486
+ csv
487
+
488
+ excel
489
+
490
+ pdf
491
+
492
+ ---
493
+
494
+ # Response Structure
495
+
496
+ status
497
+
498
+ message
499
+
500
+ data
501
+
502
+ Inside data
503
+
504
+ columns
505
+
506
+ records
507
+
508
+ records is
509
+
510
+ List
511
+
512
+ First element
513
+
514
+ records[0]
515
+
516
+ contains
517
+
518
+ data
519
+
520
+ pagination
521
+
522
+ Actual rows
523
+
524
+ records[0]["data"]
525
+
526
+ Pagination
527
+
528
+ records[0]["pagination"][0]
529
+
530
+ ---
531
+
532
+ # Pagination
533
+
534
+ Confirmed
535
+
536
+ current_page
537
+
538
+ total_pages
539
+
540
+ total_count
541
+
542
+ limit
543
+
544
+ ---
545
+
546
+ # Historical Data
547
+
548
+ Frontend
549
+
550
+ Claims
551
+
552
+ 1 year limit
553
+
554
+ Backend
555
+
556
+ Verified
557
+
558
+ 2007
559
+
560
+
561
+
562
+ 2026
563
+
564
+ Historical data successfully returned.
565
+
566
+ This means frontend restrictions do not fully represent backend capabilities.
567
+
568
+ ---
569
+
570
+ # Downloads
571
+
572
+ Confirmed
573
+
574
+ Same endpoint
575
+
576
+ POST
577
+
578
+ /daily-price-arrival/report
579
+
580
+ Additional payload
581
+
582
+ download=true
583
+
584
+ download_type
585
+
586
+ csv
587
+
588
+ excel
589
+
590
+ pdf
591
+
592
+ ---
593
+
594
+ # Multi-select
595
+
596
+ Confirmed
597
+
598
+ Fields are serialized as JSON strings.
599
+
600
+ Example
601
+
602
+ "[16]"
603
+
604
+ Likely supports
605
+
606
+ "[16,17]"
607
+
608
+ Needs further testing.
609
+
610
+ ---
611
+
612
+ # All State
613
+
614
+ Observed
615
+
616
+ 100000
617
+
618
+ Appears to represent
619
+
620
+ All States
621
+
622
+ Needs confirmation.
623
+
624
+ ---
625
+
626
+ # Known Commodity IDs
627
+
628
+ Tomato
629
+
630
+ 65
631
+
632
+ Onion
633
+
634
+ 23
635
+
636
+ Mango
637
+
638
+ 20
639
+
640
+ Paddy(Common)
641
+
642
+ 2
643
+
644
+ ---
645
+
646
+ # Confirmed Behaviour
647
+
648
+ Filters endpoint returns every lookup table.
649
+
650
+ Historical data available back to 2007.
651
+
652
+ Response structure understood.
653
+
654
+ Pagination understood.
655
+
656
+ Downloads use same endpoint.
657
+
658
+ Authentication not required.
659
+
660
+ ---
661
+
662
+ # Unknown Behaviour
663
+
664
+ Maximum limit
665
+
666
+ Rate limiting
667
+
668
+ Maximum date span
669
+
670
+ Multiple commodities
671
+
672
+ Multiple states
673
+
674
+ Multiple markets
675
+
676
+ Multiple districts
677
+
678
+ Optional parameters
679
+
680
+ Download MIME types
681
+
682
+ ---
683
+
684
+ # Recommended SDK API
685
+
686
+ from agmarknet import Agmarknet
687
+
688
+ api = Agmarknet()
689
+
690
+ api.filters()
691
+
692
+ api.report()
693
+
694
+ api.download()
695
+
696
+ api.download_state()
697
+
698
+ api.download_market()
699
+
700
+ api.download_commodity()
701
+
702
+ api.download_all()
703
+
704
+ ---
705
+
706
+ # Reverse Engineering Status
707
+
708
+ Authentication
709
+
710
+ COMPLETE
711
+
712
+ Endpoints
713
+
714
+ COMPLETE
715
+
716
+ Payload
717
+
718
+ COMPLETE
719
+
720
+ Response
721
+
722
+ COMPLETE
723
+
724
+ Pagination
725
+
726
+ COMPLETE
727
+
728
+ Lookup Tables
729
+
730
+ COMPLETE
731
+
732
+ Historical Support
733
+
734
+ COMPLETE
735
+
736
+ Downloads
737
+
738
+ COMPLETE
739
+
740
+ Behaviour Testing
741
+
742
+ IN PROGRESS
743
+
744
+ Overall
745
+
746
+ ≈99%