Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[api] Create API endpoints for the models of PKI App #462

Closed
ManishShah120 opened this issue May 18, 2021 · 0 comments · Fixed by #455
Closed

[api] Create API endpoints for the models of PKI App #462

ManishShah120 opened this issue May 18, 2021 · 0 comments · Fixed by #455

Comments

@ManishShah120
Copy link
Member

ManishShah120 commented May 18, 2021

Implement a RESTfull API for PKI App of openwisp-controller module, the API should allow to permform CRUD (Create, Retrieve, Update, Destroy) operations on these objects:-

  • Ca
  • Cert

Endpoints:-

  • Ca:

    • GET api/v1/pki/ca/ (Ca list's)
    • GET api/v1/pki/ca/{pk}/ (Ca Detail)
    • PUT/PATCH/DELETE api/v1/pki/ca/{pk}/
    • GET api/v1/pki/ca/{pk}/crl (Download CRL)
  • Cert:

    • GET api/v1/pki/cert/ (Cert list's)
    • GET api/v1/pki/cert/{pk}/ (Cert Detail)
    • PUT/PATCH/DELETE api/v1/pki/cert/{pk}/

All of the above API endpoints:-

  • Will have to respect multi-tenancy which can be achieved by various serializer classes present FilterSerializerByOrgMembership, FilterSerializerByOrgManaged, and FilterSerializerByOrgOwned in the openwisp-users module.
  • Must be paginated.
  • Respect django-permission system and also it may be required to inherit the custom permission and authentication classes from the openwisp-users module to restrict API usage for security reasons. Some of the important custom permission classes are IsOrganizationMember, IsOrganizationManager, IsOrganizationOwner,DjangoModelPermissions, IsAuthenticated, and many more.
  • Add authentication classes in every endpoint to allow only the authenticated users to get access to all the available endpoints. BearerAuthentication and SessionAuthentication can be added to achieve this.
  • All the serializer classes should be validated by the class ValidatedModelSerializer inheriting it from openwisp-utils.
  • All the validation of the model should be preserved, also more validation methods may be introduced.
  • Use transaction method wherever necessary when the database operation is taking place.
  • Shall be taken care of proper query optimization to not slow down the API and reduce the number of queries performed while fetching data from the database.
  • Add proper tests for all the endpoints and make sure the coverage doesn't decrease.
  • Handle errors gracefully and return HTTP response codes that indicate what kind of error occurred to eliminate confusion for API users.
  • Follow Django REST Framework proper coding practices and RESTful principles for building all the API’s.
  • Add proper documentation for all the endpoints both in the README and OpenAPI (DRF Yasg).
@ManishShah120 ManishShah120 added this to To do in [GSoC 2021] OpenWISP REST API via automation May 18, 2021
@ManishShah120 ManishShah120 self-assigned this May 18, 2021
@ManishShah120 ManishShah120 changed the title [api] Create API endpoints for the models of PKI App [api] Create API endpoints for the models of PKI App May 24, 2021
@ManishShah120 ManishShah120 moved this from To do to Working on (Issues) in [GSoC 2021] OpenWISP REST API Jun 22, 2021
[GSoC 2021] OpenWISP REST API automation moved this from Working on (Issues) to Done Jul 25, 2021
nemesifier pushed a commit that referenced this issue Jul 25, 2021
pandafy pushed a commit to pandafy/openwisp-controller that referenced this issue Apr 7, 2022
- Chnaged the endpoints pattern
- Removed tests for `DeviceLocation` endpoints
- Updated docs with new pattern of endpoints

[api] Updated the `devicelocation` view in `GEO` app endpoint

[api] Added the delete option for the `device_location` endpoint

[docs] Added `delete` in the device location API documentation

[fix] Context variable follows template order openwisp#484

If two or more applied templates have "default_values" with same keys,
then the context variables of the template with comes later in order
will be used.

Fixes openwisp#484

Co-authored-by: Federico Capoano <f.capoano@openwisp.io>

[feature] Added support for ED25519 SSH keys

Additionally shows a validation error if the private key
being inserted during credential creation is invalid or
not supported (supporting only RSA and ED25519 since they're
the widely accepted secure algorithms).

[feature] Allow searching for address in Device Admin

[change] Execute credentials auto_add in the background openwisp#479

Closes openwisp#479

[feature] Added device groups openwisp#203

A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup can contain metadata about group of devices in JSON format.
JSONSchema can be set systemwide for validating and building the UI users will use to fill the metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Implements and closes openwisp#203

[feature] Added connection app REST API  openwisp#464

Closes openwisp#464

[deps] Increased min django-flat-json version to 0.1.3 openwisp#502

Fixes openwisp#502

[chores] Admin improvements for groups

- added group filter in device list
- added description and meta_data to search_fields

[feature] Added REST API for PKI app (certs and CAs) openwisp#462

Implements and closes openwisp#462

[feature] Add API endpoint to return device group info based on the certificate common name openwisp#491

- [change!] Common name and Organization unique together for Cert and Ca models
- [deps] Added shortuuid~=1.0.1
- [feature] Added API endpoint to return device group using certificate common name openwisp#491

Closes openwisp#491

[fix] Fixed JSONSchema editor select2 fields getting disabled openwisp#505

The issue arose because the JSON Schema library uses selec2('enable') for
enabling or disabling select2 fields. According to the "Migrating from 3.5" section
in select2 documentation, select2('enable') has been deprecated.
The solution is to override the methods using it to simply modify
select2.disabled property.

Closes openwisp#505

[fix] Fixed advanced editor quirks openwisp#506

Bugs fixed:
- Executing a command, would raise a 'Invalid JSON' alert in the
  advance mode of the configuration even if the JSON is valid
- The device page deals with two schema and the container for
  advance mode editor used 'id="advanced_editor"'. Fetching the advance
  mode editor using the 'id' always returned the first occurence
  (advance mode editor of configuration). This used to create multiple
  advance mode editor DOM elements inside the container all of which
  had their own event listeners. Hence, full screen toggling was not
  working properly.

Closes openwisp#506

[fix] JSONSchema Editor maxlength modification handle non-existent schema objects openwisp#353

Related to openwisp#353

[change] Switch to new nav menu openwisp#472

Closes openwisp#472

[api] Re-introduced `DeviceLocation` endpoints

[api] Upgraded existing Device Location endpoint

[tests] Added tests for device location endpoint

[change] Minor code improvements

[tests] Added tests for changing location detail and coordinates

[api] Added support of creating a floorplan along with location

[api] Added update method to `Location` serializer

[api] Added support of creating/updating floorplan with location

[change] Added option to change device location detail with token

[tests] Added tests for create location endpoint of indoor type

[change] Minor bug fix and added tests for the endpoints

[tests] Minor typo fix

[change] Improved docs & optimized number of queries

[docs] Improvement in the docs related to devicelocation endpoint

[api] Fixed device location endpoint added TokenAuthentication

[docs] Updated info on how to use the device location endpoints

[change] Added tests and improved devicelocation permission logic

[change] Fixed the validation error raised due to image format

[change!] Removed the creation of devicelocation with GET request

[fix] Included PKI API URLs to `controller.urls` file openwisp#511

Closes openwisp#511

[chores] Ensure Device.group.verbose_name is lowercase for consistency

[fix] Fixed 0010 pki migration when cert serial_number is None

[fix] CommandFailedException: ensure error message is always present

If a command with suppressed output failed, CommandFailedException
would be raised with an emptry string as argument, which makes
debugging issues really hard.

In this cases we shall instantiate the exception with the same
message passed to the log.

[fix/tests] TestSsh: fixed assert_has_calls not being called

I found out these assertions were not being called while working
on the previous commit.

[fix] Registered menu group in connection app openwisp#512

Closes openwisp#512

[fix] Fixed new theme issues in config editor and command inputs

Co-authored-by: Federico Capoano <f.capoano@openwisp.io>

[test] Fixed failing tests due to openwisp-utils menu changes

Co-authored-by: Pedro Peña <pedro@makedit.com>

[docs] Updated docs about limitations of device location endpoint

[tests] Fixed tests causing CI to fail
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

1 participant