# node-socrata

> A node.js implementation for the Socrata Open Data API (SODA)

Latest version **0.0.50** (published 2015-05-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install node-socrata
pnpm add node-socrata
yarn add node-socrata
bun add node-socrata
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.50 |
| Published | 2015-05-12 |
| First published | 2014-07-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 (+5 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Andrew Burnes |
| Maintainers | apburnes |
| Keywords | Open, Open-Data, Data, Socrata, SODA, API |

## Links

- npm: https://www.npmjs.com/package/node-socrata
- Repository: https://github.com/apburnes/node-socrata
- Issues: https://github.com/apburnes/node-socrata/issues
- npm.io page: https://npm.io/package/node-socrata

## Dependencies (3)

- [rest](https://npm.io/package/rest.md) ^1.1.1
- [lodash](https://npm.io/package/lodash.md) ~2.4.1
- [through](https://npm.io/package/through.md) ~2.3.4

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 0.0.50 (latest) — 2015-05-12
- 0.0.5 — 2015-05-12
- 0.0.4 — 2014-07-14
- 0.0.3 — 2014-07-02
- 0.0.2 — 2014-07-02
- 0.0.12-a — 2014-07-01
- 0.0.12 — 2014-07-01
- 0.0.11-k — 2014-07-01
- 0.0.11-j — 2014-07-01
- 0.0.11-i — 2014-07-01
- 0.0.11-h — 2014-07-01
- 0.0.11-g — 2014-07-01
- 0.0.11-f — 2014-07-01
- 0.0.11-d — 2014-07-01
- 0.0.11-c — 2014-07-01
- … 4 more at https://npm.io/package/node-socrata/versions

## README

##node-socrata##
A Node.js interface to access the Socrata Open Data API (SODA)


###*Note: Work in Progress###

####Install####
```bash
$ npm install node-socrata
```
###Examples###

####'GET' Requests####

__Request All Data:__ _default limit: 1000 records_

Using a default 'GET' request with no query parameter returns all records
and fields in the destination data resource table.

```javascript
var Socrata = require('node-socrata');

var config = {
  // find a hostDomain from the listSource method
  hostDomain: 'https://controllerdata.lacity.org',
  // An accessible API table from the host domain
  resource: 'revenue',
  // Create account and register app https://opendata.socrata.com
  XAppToken: process.env.SOCRATA_APP_TOKEN || 'registered-app-token'
};

var soda = new Socrata(config);

soda.get(function(err, response, data) {
  // response = json object returning headers, status, path, method
  // data  = json object of table records
});

```

__Query Data with Socrata's 'SoQL' __

Use a query parameter object to filter/query the destination resource table.

Parameters | Description | Default
--- | --- | ---
`$select`|The set of columns to be returned|All columns
`$where`|Filters the rows to be returned|No filter
`$order`|Specifies the order of results| Unorder
`$group`|Column to group results on, similar to SQL Grouping|No grouping
`$limit`|Maximum number of results to return|1000 (and a maximum of 1000)
`$offset`|Offset count into the results to start at, used for paging|Starts at 0
`$q`|Performs a full text search for a value|No search

```javascript
// Create query parameter object:
// Return ten records & only fund_name and fiscal_year

/** Query Parameters initial "$" is optional **/
var params = {
  $select: ['fund_name', 'fiscal_year'],
  $limit: 10
}

soda.get(params, function(err, response, data) {
  // data... use it.
});

```

####'POST' Requests####

To post data to your authorized Socrata tables use the `.post` method which
takes two arguments: data _(json)_ and a callback function which returns the
response.

To use the post method, you will have to setup your Socrata username and
password in the initial config to execute a successful post.

```javascript
//  Setup and configure the Socrata table to execute a 'POST' request
var Socrata = require('node-socrata');

var config = {
  hostDomain: 'https://opendata.socrata.com', // The host domain for the table.
  resource: 'my-table', // The table where data will be posted.
  username: process.env.SOCRATA_USERNAME || 'username',
  password: process.env.SOCRATA_PASSWORD || 'password',
  XAppToken: process.env.SOCRATA_APP_TOKEN || 'registered-app-token'
};

// **Note: Make sure to follow the table's existing schema;
var data = {
  foo: 'bar'
};

var soda = new Socrata(config);

// Post that data
soda.post(data, function(err, response, record) {
  // handle error, response, and record
});

```

With a successful post, the callback's __record__ argument will return
the number of records created, deleted, and updated.  With the post method,
records will only be created.

```
Output generated from the record

{ 'By RowIdentifier': 0,
  'Rows Updated': 0,
  'Rows Deleted': 0,
  'Rows Created': 1,
  Errors: 0,
  'By SID': 0
}

```

####TODO####
- Add 'DELETE' method
- Add 'PUT' method
- Add supported data types

####About####
by Andrew Burnes - apburnes@gmail.com

---
_Source: https://npm.io/package/node-socrata · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
