csvbase is a simple web database. Learn more on the about page.

Galaxy / Ships All rights reserved

439 rows, last changed 1 year ago
Make a copy
Make a copy

Table of contents

  1. The basics: auth and content negotations
    1. Authentication
    2. Content negotiation
  2. The API: endpoint-by-endpoint
    1. Tables
      1. Reading a table
    2. Rows
      1. Creating a new row
      2. Reading a row
      3. Updating an existing row
      4. Deleting a row

The basics: auth and content negotiation

Authentication

With CSVBase, you authenticate using by putting your username and API key straight in the url (known as "HTTP "basic" auth").

Here's an example:

https://<some_user>:<some_api_key>@csvbase.com/Galaxy/Ships

Basic auth is widely supported and is usually accepted anywhere that accepts urls.

However, Galaxy/Ships is public so auth is needed only for writes.

Content negotiation

CSVBase APIs use content negotiation to decide what formats are in use. This means it consults HTTP headers to decide what format to send back in response to a request.

It important that you set the Content-Type and Accept headers to be the mimetype you want: typically that is application/json for both. If you fail to include these headers in your requests, the API will still work but CSVBase will pick a sensible default: CSV for tables, JSON for rows.

You can bypass content negotiation for read-only requests by appending a file extension to the url, eg .json. Here's an example of that (same resource as above):

https://<some_user>:<some_api_key>@csvbase.com/Galaxy/Ships/export/json

This is useful when dealing with software where you aren't able to set headers.

The API: endpoint-by-endpoint

There are three kinds of thing in csvbase:

  1. users
  2. tables
  3. rows

While there's no API for users so far, there is for tables and rows.

Tables

This table looks like this in JSON:

{
    "name": "Ships",
    "is_public": true,
    "caption": "",
    "data_licence": "All rights reserved",
    "created": "2023-01-19T02:30:51.848957+00:00",
    "last_changed": "2023-01-19T02:30:51.848957+00:00",
    "columns": [
        {
            "name": "csvbase_row_id",
            "type": "integer"
        },
        {
            "name": "name",
            "type": "string"
        },
        {
            "name": "class",
            "type": "string"
        },
        {
            "name": "description",
            "type": "string"
        },
        {
            "name": "event_id",
            "type": "integer"
        },
        {
            "name": "permit_override",
            "type": "integer"
        },
        {
            "name": "explosion_size",
            "type": "integer"
        },
        {
            "name": "not_for_sale",
            "type": "boolean"
        },
        {
            "name": "cargo_hold",
            "type": "integer"
        },
        {
            "name": "ore_hold",
            "type": "integer"
        },
        {
            "name": "non_player",
            "type": "boolean"
        },
        {
            "name": "can_warp",
            "type": "boolean"
        },
        {
            "name": "stealth",
            "type": "boolean"
        },
        {
            "name": "custom_drift",
            "type": "float"
        },
        {
            "name": "vip",
            "type": "boolean"
        },
        {
            "name": "shield",
            "type": "float"
        },
        {
            "name": "hull",
            "type": "float"
        },
        {
            "name": "top_speed",
            "type": "float"
        },
        {
            "name": "acceleration",
            "type": "float"
        },
        {
            "name": "turn_speed",
            "type": "float"
        }
    ],
    "page": {
        "rows": [
            {
                "row": {
                    "name": "2018",
                    "class": "Battlecruiser",
                    "description": "Special 2018 ship, those who own it are among the richest collectors in the known galaxy",
                    "event_id": -1,
                    "permit_override": 39,
                    "explosion_size": 80,
                    "not_for_sale": true,
                    "cargo_hold": 100,
                    "ore_hold": 0,
                    "non_player": false,
                    "can_warp": true,
                    "stealth": false,
                    "custom_drift": null,
                    "vip": false,
                    "shield": 2018.0,
                    "hull": 2018.0,
                    "top_speed": 300.0,
                    "acceleration": 40.0,
                    "turn_speed": 0.6000000238418579
                },
                "row_id": 1,
                "url": "https://csvbase.com/Galaxy/Ships/rows/1"
            }
        ],
        "previous_page_url": null,
        "next_page_url": "https://csvbase.com/Galaxy/Ships?op=gt&n=1"
    },
    "approx_size": 439
}

Note that there is the top-level metadata, plus a "page" of rows. Tables are often (usually) too big to be put into a single JSON object so they are "paginated". To follow the table, page by page, you can use the next_page_url and previous_page_url dictionary keys. They will be null if you've reached the end or are at the beginning, respectively.

Reading a table

GET from https://csvbase.com/Galaxy/Ships

You'll need to follow the next_page_url urls (described above) to get to the end of the table.

Rows

Rows from Galaxy/Ships look like this in JSON:

{
    "row": {
        "name": "2018",
        "class": "Battlecruiser",
        "description": "Special 2018 ship, those who own it are among the richest collectors in the known galaxy",
        "event_id": -1,
        "permit_override": 39,
        "explosion_size": 80,
        "not_for_sale": true,
        "cargo_hold": 100,
        "ore_hold": 0,
        "non_player": false,
        "can_warp": true,
        "stealth": false,
        "custom_drift": null,
        "vip": false,
        "shield": 2018.0,
        "hull": 2018.0,
        "top_speed": 300.0,
        "acceleration": 40.0,
        "turn_speed": 0.6000000238418579
    },
    "row_id": 1,
    "url": "https://csvbase.com/Galaxy/Ships/rows/1"
}

Creating a new row

POST to https://<some_user>:<some_api_key>@csvbase.com/Galaxy/Ships/rows/

Example body
{
    "row": {
        "name": "2018",
        "class": "Battlecruiser",
        "description": "Special 2018 ship, those who own it are among the richest collectors in the known galaxy",
        "event_id": -1,
        "permit_override": 39,
        "explosion_size": 80,
        "not_for_sale": true,
        "cargo_hold": 100,
        "ore_hold": 0,
        "non_player": false,
        "can_warp": true,
        "stealth": false,
        "custom_drift": null,
        "vip": false,
        "shield": 2018.0,
        "hull": 2018.0,
        "top_speed": 300.0,
        "acceleration": 40.0,
        "turn_speed": 0.6000000238418579
    }
}
Example response
{
    "row": {
        "name": "2018",
        "class": "Battlecruiser",
        "description": "Special 2018 ship, those who own it are among the richest collectors in the known galaxy",
        "event_id": -1,
        "permit_override": 39,
        "explosion_size": 80,
        "not_for_sale": true,
        "cargo_hold": 100,
        "ore_hold": 0,
        "non_player": false,
        "can_warp": true,
        "stealth": false,
        "custom_drift": null,
        "vip": false,
        "shield": 2018.0,
        "hull": 2018.0,
        "top_speed": 300.0,
        "acceleration": 40.0,
        "turn_speed": 0.6000000238418579
    },
    "row_id": 1,
    "url": "https://csvbase.com/Galaxy/Ships/rows/1"
}

Status code 201 upon success.

Reading a row

GET from https://csvbase.com/Galaxy/Ships/rows/1

No body is provided with this request. Status code 200 upon success.

Example response
{
    "row": {
        "name": "2018",
        "class": "Battlecruiser",
        "description": "Special 2018 ship, those who own it are among the richest collectors in the known galaxy",
        "event_id": -1,
        "permit_override": 39,
        "explosion_size": 80,
        "not_for_sale": true,
        "cargo_hold": 100,
        "ore_hold": 0,
        "non_player": false,
        "can_warp": true,
        "stealth": false,
        "custom_drift": null,
        "vip": false,
        "shield": 2018.0,
        "hull": 2018.0,
        "top_speed": 300.0,
        "acceleration": 40.0,
        "turn_speed": 0.6000000238418579
    },
    "row_id": 1,
    "url": "https://csvbase.com/Galaxy/Ships/rows/1"
}

Updating an existing row

PUT to https://<some_user>:<some_api_key>@csvbase.com/Galaxy/Ships/rows/1

Example body
{
    "row": {
        "name": "2018",
        "class": "Battlecruiser",
        "description": "Special 2018 ship, those who own it are among the richest collectors in the known galaxy",
        "event_id": -1,
        "permit_override": 39,
        "explosion_size": 80,
        "not_for_sale": true,
        "cargo_hold": 100,
        "ore_hold": 0,
        "non_player": false,
        "can_warp": true,
        "stealth": false,
        "custom_drift": null,
        "vip": false,
        "shield": 2018.0,
        "hull": 2018.0,
        "top_speed": 300.0,
        "acceleration": 40.0,
        "turn_speed": 0.6000000238418579
    },
    "row_id": 1,
    "url": "https://csvbase.com/Galaxy/Ships/rows/1"
}
Response

Upon success the body you sent will be echoed back, with status code 200.

Deleting a row

DELETE from https://<some_user>:<some_api_key>@csvbase.com/Galaxy/Ships/rows/1

No body is required. Status code 204 upon success.