Implementation notes

JSON structure of a submission

A submission is an array of Records:

Submission := [ Record ]

A Record is an object with the identity of the contributor and a list of contributions:

Record := { id: [ Identifier ], contributions: [ Contribution ] }

There can be more than one Identifier per Record, but there usually is only one. There can be one or more Contribution per Record.

An Identifier is an object identifying the contributor in one of many possible ways:

Identifier := { type: IdentifierType, id: string, desc: optional_string }

IdentifierType := "login"|"email"|"fpr"

Currently only debian.org or alioth login names, emails and OpenPGP key fingerprints are supported.

A Contribution is an object detailing one kind of contribution over time:

Contribution := { type: string, begin: optional_Date, end: optional_Date, url: optional_string }

Date := "yyyy-mm-dd"

Examples

A minimal submission:

[
  { id: [ { type: "login", id: "enrico" } ],
    contributions: [
      { type: "talking" }
    ]
  },
  { id: [ { type: "login", id: "93sam" } ],
    contributions: [
      { type: "talking" }
    ]
  }
]

A more detailed submission:

[
  { id: [ { type: "login", id: "enrico" } ],
    contributions: [
      { type: "talking", begin: "2010-01-01", end: "2013-11-16",
        url: "http://talks.debian.org/enrico"
      }
    ]
  },
  { id: [ { type: "login", id: "93sam" } ],
    contributions: [
      { type: "talking", begin: "1990-05-01", end: "2013-11-16",
        url: "http://talks.debian.org/93sam"
      }
    ]
  }
]

Posting a submission

Submission are sent via a multipart/form-data HTTP POST to https://contributors.debian.org/contributors/post

The JSON data is sent as a file field called 'data', so you will need an HTTP client capable of file uploads.

The other fields uploaded are:

Example submission, with compression:

curl https://contributors.debian.org/contributors/post \
     -F source="Debian Talkers" -F auth_token="foobarbaz1234" \
     -F data_compression=gzip -F data=@filename.json.gz

Example plain submission:

curl https://contributors.debian.org/contributors/post \
     -F source="Debian Talkers" -F auth_token="foobarbaz1234" \
     -F data=@filename.json

Data sources

Source code