Athenian Reposet API

The reposet API from Athenian — 3 operation(s) for reposet.

Operations 5

POST /reposet/create 🛡️👤 Create a repository set #
DELETE /reposet/{id} 🛡️👤 Delete a repository set. #
GET /reposet/{id} List a repository set. The user must be in the account that owns the reposet #
PUT /reposet/{id} 🛡️👤 Update a repository set. #
GET /reposets/{id} List the repository sets belonging to the calling user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/athenian-reposet-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

athenian-reposet-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: admin@athenian.co
    name: the administrator by email
  description: 'Server version: {{ server_version }} built on {{ build_date }} @ {{ commit }}


    Origin GitHub repository: athenianco/api-spec.'
  license:
    name: CC-BY-4.0
  title: '{{ title }} Reposet API'
  version: 2.1.86
servers:
- description: '{{ server_description }} - {{ server_url }}'
  url: '{{ server_url }}/v1'
tags:
- name: reposet
paths:
  /reposet/create:
    post:
      operationId: create_reposet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RepositorySetCreateRequest'
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedIdentifier'
          description: Identifier of the created repository set.
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to create a repository set from the specified items.
        409:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: There is an existing reposet with the same contents.
      security:
      - bearerAuth: []
      summary: 🛡️👤 Create a repository set
      tags:
      - reposet
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.reposet_controller
  /reposet/{id}:
    delete:
      operationId: delete_reposet
      parameters:
      - description: Numeric identifier of the repository set to delete.
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: integer
        style: simple
      responses:
        200:
          content:
            application/json:
              schema:
                type: object
          description: Empty object indicates a successful removal.
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to delete the specified repository set.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified repository set was not found.
      security:
      - bearerAuth: []
      summary: 🛡️👤 Delete a repository set.
      tags:
      - reposet
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.reposet_controller
    get:
      operationId: get_reposet
      parameters:
      - description: Numeric identifier of the repository set to list.
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: integer
        style: simple
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositorySetWithName'
          description: List of repositories in the specified set.
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to list the specified repository set.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified repository set was not found.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: List a repository set. The user must be in the account that owns the reposet
      tags:
      - reposet
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.reposet_controller
    put:
      operationId: update_reposet
      parameters:
      - description: Numeric identifier of the repository set to update.
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: integer
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RepositorySetWithName'
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                type: object
          description: Empty object indicates a successful update.
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to update the specified repository set.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified repository set was not found.
        409:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: There is an existing reposet with the same contents.
      security:
      - bearerAuth: []
      summary: 🛡️👤 Update a repository set.
      tags:
      - reposet
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.reposet_controller
  /reposets/{id}:
    get:
      operationId: list_reposets
      parameters:
      - $ref: '#/components/parameters/pathAccountID'
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositorySetList'
          description: List the repository sets belonging to the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user does not belong to the specified account.
        409:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: Concurrent requests that are finishing the account registration.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: List the repository sets belonging to the calling user
      tags:
      - reposet
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.reposet_controller
components:
  parameters:
    pathAccountID:
      description: Numeric identifier of the account.
      explode: false
      in: path
      name: id
      required: true
      schema:
        type: integer
      style: simple
  schemas:
    RepositoryID:
      description: 'Repository name which uniquely identifies any repository in any service provider.

        The format matches the repository URL without the protocol part. No ".git" should be appended.

        We support a special syntax for repository sets: "{reposet id}" adds all the repositories

        from the given set.

        '
      example: github.com/athenianco/athenian-webapp
      type: string
    RepositorySetList:
      description: List of repository sets owned by a user.
      items:
        $ref: '#/components/schemas/RepositorySetListItem'
      type: array
    CreatedIdentifier:
      additionalProperties: false
      example:
        id: 777
      properties:
        id:
          description: Identifier of the created entity.
          example: 777
          type: integer
      required:
      - id
      type: object
    RepositorySetListItem:
      additionalProperties: false
      description: Element of RepositorySetList.
      example:
        items_count: 6
        created: 2020-01-23 04:56:07+00:00
        id: 1
        name: all
        updated: 2020-01-23 04:56:07+00:00
      properties:
        id:
          description: Repository set identifier.
          type: integer
        name:
          description: Repository set name.
          type: string
        created:
          description: Date and time of creation of the repository set.
          format: date-time
          type: string
        updated:
          description: Date and time of the last change of the repository set.
          format: date-time
          type: string
        items_count:
          description: Number of repositories in the set.
          minimum: 1
          type: integer
      type: object
    RepositorySetCreateRequest:
      additionalProperties: false
      description: Repository set creation request.
      example:
        account: 1
        items:
        - github.com/athenianco/athenian-webapp
        - github.com/athenianco/athenian-api
        name: users
      properties:
        account:
          description: Account identifier. That account will own the created repository set. The user must be an admin of the account.
          type: integer
        items:
          items:
            $ref: '#/components/schemas/RepositoryID'
          type: array
        name:
          description: Unique editable identifier of the repository set.
          type: string
      required:
      - account
      - items
      - name
      type: object
    GenericError:
      example:
        detail: 'Unsupported metric: pr-xxx-time'
        status: 400
        title: Bad request syntax or unsupported method.
        type: /errors/InvalidRequestError
      properties:
        detail:
          description: Human-readable explanation specific to this occurrence of the problem.
          example: 'Unsupported metric: pr-xxx-time'
          type: string
        instance:
          description: URI reference that identifies the specific occurrence of the problem. It is `null` for 4xx, Sentry event ID for 5xx.
          example: 2763c4eabd7240f59829ee1a02546293
          type: string
        status:
          description: Duplicated HTTP status code.
          example: 400
          type: integer
        title:
          description: Short, human-readable summary of the problem type.
          example: Bad request syntax or unsupported method.
          type: string
        type:
          description: URI reference that identifies the problem type (RFC 7807).
          example: /errors/InvalidRequestError
          type: string
      required:
      - status
      - title
      - type
      type: object
    RepositorySetWithName:
      additionalProperties: false
      description: A set of repositories. An empty list results an empty response in contrary to DeveloperSet. Duplicates are automatically ignored.
      example:
        name: all
        items:
        - github.com/athenianco/athenian-webapp
        - github.com/athenianco/athenian-api
        precomputed: true
      properties:
        name:
          type: string
        items:
          items:
            $ref: '#/components/schemas/RepositoryID'
          type: array
        precomputed:
          type: boolean
      type: object
  securitySchemes:
    apiKeyAuth:
      description: 'Authorization by the value of `X-API-Key` header aka API token.

        The tokens are user- and account-specific. Create them by calling `/token/create`.

        The server automatically inserts `account` in the request''s body if it was not

        supplied by the user.'
      in: header
      name: X-API-Key
      type: apiKey
      x-apikeyInfoFunc: athenian.api.controllers.security_controller.info_from_apiKeyAuth
    bearerAuth:
      bearerFormat: JWT
      description: 'Regular JSON Web Token authorization powered by Auth0.

        The server expects an `Authorization: Bearer <token>` header and checks `<token>` by

        sending it to Auth0. Visit [{{ server_url | replace("api", "app") }}/bearer]({{ server_url | replace("api", "app") }}/bearer)

        to copy your current JWT that will expire within 24 hours.'
      scheme: bearer
      type: http
      x-bearerInfoFunc: athenian.api.controllers.security_controller.info_from_bearerAuth