Namestore

The NAMESTORE REST API.

Data model

The following data model definitions are expected to be used in a JSON representation in the respective requests. Responses are provided in the JSON format accordingly.

interface RecordSet {

  // The name of the record set
  record_name: string;

  // The record set data array.
  data: RecordData[];

}
interface RecordData {

  // The string representation of the record data value, e.g. "1.2.3.4" for an A record
  value: string;

  // The string representation of the record type, e.g. "A" for an IPv4 address
  record_type: string;

  // The relative expiration time, in microseconds. Set if is_relative_expiration: true
  relative_expiration: integer;

  // The absolute expiration time, in microseconds. Set if is_relative_expiration: false
  absolute_expiration: integer;

  // Whether or not this is a private record
  is_private: boolean;

  // Whether or not the expiration time is relative (else absolute)
  is_relative_expiration: boolean;

  // Whether or not this is a supplemental record
  is_supplemental: boolean;

  // Whether or not this is a shadow record
  is_shadow: boolean

  // Whether or not this is a maintenance record
  is_maintenance: boolean
}
interface GnunetError {

  // The error description
  error: string;

  // The error code
  error_code: integer

}

NOTE: All endpoints can return with an HTTP status (5xx). In this case the response body contains a NamestoreError.

Requests

GET /namestore/$ZNAME

This endpoint returns all namestore entries for one zone identified by $ZNAME.

Request

Query Parameters:
  • record_typeOptional. The string representation of a DNS or GNS record type. If given, only record sets including record with this type will be returned.

  • omit_privateOptional. If set, private records are omitted from the results.

  • include_maintenanceOptional. If set, maintenance records are included in the results.

Response

200 Ok:

The body is a RecordSet array.

404 Not found:

The zone was not found.

GET /namestore/$ZNAME/$LABEL

This endpoint returns the record set under label $LABEL of the zone identified by $ZNAME.

Request

Query Parameters:
  • record_typeOptional. The string representation of a DNS or GNS record type. If given, only record sets including record with this type will be returned.

  • omit_privateOptional. If set, private records are omitted from the results.

  • include_maintenanceOptional. If set, maintenance records are included in the results.

Response

200 Ok:

The body is a RecordSet.

404 Not found:

The zone or label was not found.

POST /namestore/$ZNAME

Create or append a RecordSet to a the zone identified by $ZNAME.

Request

The request body is a single RecordSet.

Response

204 No Content:

The zone was successfully added.

404 Not found:

The zone was not found.

PUT /namestore/$ZNAME

Create or replace a RecordSet in the zone identified by $ZNAME.

Request

The request body is a single RecordSet.

Response

204 No Content:

The zone was successfully updated.

404 Not found:

The zone was not found.

DELETE /namestore/$ZNAME/$LABEL

Delete all records under name $LABEL in the zone identified by $ZNAME.

Response

204 No Content:

The records were successfully deleted.

404 Not found:

The zone or label was not found.

POST /namestore/import/$ZNAME

Bulk import of record sets into the zone identified by $ZNAME. This API adds the provided array of RecordSet to the zone. This operation does NOT replace existing records under the label(s). If you want a clean import, reset your database before using this API. This API is making sure that the records are added within one database transaction, calling GNUNET_NAMESTORE_transaction_begin, GNUNET_NAMESTORE_records_store2 (successively, if necessary) and finally GNUNET_NAMESTORE_transaction_commit.

Request

The request body is a RecordSet array.

Response

204 No Content:

The record sets were successfully added.

404 Not found:

The zone $ZNAME was not found.