First version of REST API

Description

*What works:*

  • `/api/v1/collections/` with the standard actions for collections.

  • `/api/v1/bundles/` with the standard actions for bundles.

  • `/api/v1/bundles/<uuid>/files/` lists files in snapshot of the latest version of the bundle. Files can be added or replaced via POST and deleted via DELETE. Each file add, replace or delete creates a new version.

  • `/api/v1/bundles_versions/` lists bundle versions.

  • `/api/v1/bundles_versions/<bundle_uuid>,<version_num>/files/` lists files in snapshot of the version.

  • All the actions above can be performed from the DRF interface available at `/api/v1/`.

*Todo for future rounds:*

  • An endpoint to POST a full snapshot as an archive for a bundle.

  • Add `expand` field to `/bundles/` and `/bundle_versions/` to inline the files list.

  • Add filters to the endpoints.

  • A lot more.

*Non-goals:*

  • Permissions, authentication, throttling, pagination or anything that will not impact the shape of the API.

  • In the future some actions (like deletes) or editing of certain fields may not be possible. But that can be decided once the data model has stabilized.

Done

Assignee

Unassigned

Reporter

Open Source Pull Request Bot

Labels

None

Contributor Name

Usman Khalid

Repo

edx/blockstore

Customer

Epic Link

None

OSCM Assignee

None

Platform Map Area (Levels 1 &amp; 2)

None

Platform Map Area (Levels 3 &amp; 4)

None

Blended Hour Utilization Percentage

None

edX Theme

None

edX Squad

None

Github Lines Added

1138

Github Lines Deleted

33

Priority

Unset