# Registry

## GET /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"get":{"operationId":"RegistryController_handleSpecialEndpoints_get","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## POST /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"post":{"operationId":"RegistryController_handleSpecialEndpoints_post","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## PUT /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"put":{"operationId":"RegistryController_handleSpecialEndpoints_put","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## DELETE /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"delete":{"operationId":"RegistryController_handleSpecialEndpoints_delete","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## OPTIONS /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"options":{"operationId":"RegistryController_handleSpecialEndpoints_options","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## HEAD /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"head":{"operationId":"RegistryController_handleSpecialEndpoints_head","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## PATCH /sfp/api/npm/-/\*

> Handle npm registry special endpoints (ping, search, whoami)

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/-/*":{"patch":{"operationId":"RegistryController_handleSpecialEndpoints_patch","summary":"Handle npm registry special endpoints (ping, search, whoami)","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"},"502":{"description":"Registry unavailable"}},"tags":["Registry"]}}}}
```

## GET /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"get":{"operationId":"RegistryController_handleScopedPackage_get","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## POST /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"post":{"operationId":"RegistryController_handleScopedPackage_post","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## PUT /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"put":{"operationId":"RegistryController_handleScopedPackage_put","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## DELETE /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"delete":{"operationId":"RegistryController_handleScopedPackage_delete","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## OPTIONS /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"options":{"operationId":"RegistryController_handleScopedPackage_options","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## HEAD /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"head":{"operationId":"RegistryController_handleScopedPackage_head","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## PATCH /sfp/api/npm/@{scope}/{package}

> Handle scoped package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/@{scope}/{package}":{"patch":{"operationId":"RegistryController_handleScopedPackage_patch","summary":"Handle scoped package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## GET /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"get":{"operationId":"RegistryController_handlePackage_get","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## POST /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"post":{"operationId":"RegistryController_handlePackage_post","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## PUT /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"put":{"operationId":"RegistryController_handlePackage_put","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## DELETE /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"delete":{"operationId":"RegistryController_handlePackage_delete","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## OPTIONS /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"options":{"operationId":"RegistryController_handlePackage_options","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## HEAD /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"head":{"operationId":"RegistryController_handlePackage_head","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```

## PATCH /sfp/api/npm/{package}

> Handle package operations

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.3.0"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}}},"paths":{"/sfp/api/npm/{package}":{"patch":{"operationId":"RegistryController_handlePackage_patch","summary":"Handle package operations","parameters":[],"responses":{"200":{"description":"Request proxied successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - Requires role: owner, member, application"}},"tags":["Registry"]}}}}
```
