openapi: 3.0.1 info: title: LemonLDAP::NG Manager API description: The Manager API allows an administrator to modify the LemonLDAP::NG configuration programmatically. It is not meant to be accessed by end users. The client libraries mentionned in examples can be generated from doc/sources/manager-api/openapi-spec.yaml version: 2.0.9 servers: - url: https://manager-api.example.com tags: - name: samlsp description: SAML Service Providers - name: oidcrp description: OpenID Connect Relaying Parties - name: 2fa description: Registered Second Factors paths: /api/v1/status: get: summary: Check the status of the API operationId: status responses: 200: $ref: '#/components/responses/StatusResponse' 503: $ref: '#/components/responses/StatusResponse' /api/v1/providers/saml/sp: post: tags: - samlsp summary: Create a new SAML Service provider operationId: addsamlsp requestBody: description: SAML Service provider to add content: application/json: schema: $ref: '#/components/schemas/SamlSp' required: true responses: 201: $ref: '#/components/responses/Created' 400: $ref: '#/components/responses/Error' 409: $ref: '#/components/responses/Conflict' /api/v1/providers/saml/sp/findByConfKey: get: tags: - samlsp summary: Finds SAML Service providers by configuration key description: Takes a search pattern to be tested against existing service providers operationId: findSamlSpByConfKey parameters: - name: pattern in: query description: Search pattern required: true schema: type: "string" examples: any: summary: Any value value: "*" prefix: summary: Given prefix value: "zone1-*" anywhere: summary: Substring value: "something" responses: 200: $ref: '#/components/responses/ManySamlSp' 400: $ref: '#/components/responses/Error' /api/v1/providers/saml/sp/findByEntityId: get: tags: - samlsp summary: Finds SAML Service Provider by Entity ID operationId: findSamlSpByEntityId parameters: - name: entityId in: query description: Entity ID to search required: true schema: type: "string" example: http://mysp.example.com/saml/metadata responses: 200: $ref: '#/components/responses/OneSamlSp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' /api/v1/providers/saml/sp/{confKey}: get: tags: - samlsp summary: Get SAML Service Provider by configuration key description: Returns a single Service Provider operationId: getSamlSpByConfKey parameters: - name: confKey in: path description: Configuration key of SAML Service Provider required: true schema: $ref: '#/components/schemas/confKey' responses: 200: $ref: '#/components/responses/OneSamlSp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' put: tags: - samlsp summary: Replaces a SAML Service operationId: replaceSamlSp parameters: - name: confKey in: path description: Configuration key of SAML Service Provider that needs to be replaced required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/SamlSpReplace' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' patch: tags: - samlsp summary: Updates a SAML Service. operationId: updateSamlSp parameters: - name: confKey in: path description: Configuration key of SAML Service Provider that needs to be updated required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/SamlSpUpdate' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' delete: tags: - samlsp summary: Deletes a SAML Service Provider operationId: deleteSamlSp parameters: - name: confKey in: path description: Configuration key of SAML Service Provider to delete required: true schema: $ref: '#/components/schemas/confKey' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' /api/v1/providers/oidc/rp: post: tags: - oidcrp summary: Create a new OpenID Connect Relaying Party operationId: addoidcrp requestBody: description: OpenID Connect Relaying Party to add content: application/json: schema: $ref: '#/components/schemas/OidcRp' required: true responses: 201: $ref: '#/components/responses/Created' 400: $ref: '#/components/responses/Error' 409: $ref: '#/components/responses/Conflict' /api/v1/providers/oidc/rp/findByConfKey: get: tags: - oidcrp summary: Finds OpenID Connect Relaying Partys by configuration key description: Takes a search pattern to be tested against existing service providers operationId: findOidcRpByConfKey parameters: - name: pattern in: query description: Search pattern required: true schema: $ref: '#/components/schemas/confKey' examples: any: summary: Any value value: "*" prefix: summary: Given prefix value: "zone1-*" anywhere: summary: Substring value: "something" responses: 200: $ref: '#/components/responses/ManyOidcRp' 400: $ref: '#/components/responses/Error' /api/v1/providers/oidc/rp/findByClientId: get: tags: - oidcrp summary: Finds OpenID Connect Relaying Party by Client ID operationId: findOidcRpByClientId parameters: - name: clientId in: query description: Client ID to search required: true schema: type: "string" example: my_client_id responses: 200: $ref: '#/components/responses/OneOidcRp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' /api/v1/providers/oidc/rp/{confKey}: get: tags: - oidcrp summary: Get OpenID Connect Relaying Party by configuration key description: Returns a single Service Provider operationId: getOidcRpByConfKey parameters: - name: confKey in: path description: Configuration key of OpenID Connect Relaying Party required: true schema: $ref: '#/components/schemas/confKey' responses: 200: $ref: '#/components/responses/OneOidcRp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' patch: tags: - oidcrp summary: Updates an OpenID Connect Relaying Party operationId: updateOidcRp parameters: - name: confKey in: path description: Configuration key of OpenID Connect Relaying Party that needs to be updated required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/OidcRpUpdate' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' put: tags: - oidcrp summary: Replaces an OpenID Connect Relaying Party operationId: replaceOidcRp parameters: - name: confKey in: path description: Configuration key of OpenID Connect Relaying Party that needs to be replaced required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/OidcRpReplace' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' delete: tags: - oidcrp summary: Deletes a OpenID Connect Relaying Party operationId: deleteOidcRp parameters: - name: confKey in: path description: Configuration key of OpenID Connect Relaying Party to delete required: true schema: $ref: '#/components/schemas/confKey' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' /api/v1/providers/cas/app: post: tags: - casapp summary: Create a new CAS Application operationId: addcasapp requestBody: description: CAS Application to add content: application/json: schema: $ref: '#/components/schemas/CasApp' required: true responses: 201: $ref: '#/components/responses/Created' 400: $ref: '#/components/responses/Error' 409: $ref: '#/components/responses/Conflict' /api/v1/providers/cas/app/findByConfKey: get: tags: - casapp summary: Finds CAS applications by configuration key description: Takes a search pattern to be tested against existing applications operationId: findCasAppByConfKey parameters: - name: pattern in: query description: Search pattern required: true schema: type: "string" examples: any: summary: Any value value: "*" prefix: summary: Given prefix value: "zone1-*" anywhere: summary: Substring value: "something" responses: 200: $ref: '#/components/responses/ManyCasApp' 400: $ref: '#/components/responses/Error' /api/v1/providers/cas/app/findByServiceUrl: get: tags: - casapp summary: Get CAS Application by Service URL operationId: findCasAppByServiceUrl parameters: - name: serviceUrl in: query description: Service URL to search required: true schema: type: "string" example: http://mycasapp.example.com/ responses: 200: $ref: '#/components/responses/OneCasApp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' /api/v1/providers/cas/app/{confKey}: get: tags: - casapp summary: Get CAS Application by configuration key description: Returns a single Application operationId: getCasAppByConfKey parameters: - name: confKey in: path description: Configuration key of CAS Application required: true schema: $ref: '#/components/schemas/confKey' responses: 200: $ref: '#/components/responses/OneCasApp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' put: tags: - casapp summary: Replaces a CAS Application operationId: replaceCasApp parameters: - name: confKey in: path description: Configuration key of CAS Application that needs to be replaced required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/CasAppReplace' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' patch: tags: - casapp summary: Updates a CAS Application. operationId: updateCasApp parameters: - name: confKey in: path description: Configuration key of CAS Application that needs to be updated required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/CasAppUpdate' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' delete: tags: - casapp summary: Deletes a CAS Application operationId: deleteCasApp parameters: - name: confKey in: path description: Configuration key of CAS Application to delete required: true schema: $ref: '#/components/schemas/confKey' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' '/api/v1/secondFactor/{uid}': description: Second factors for a particular user parameters: - name: uid in: path required: true schema: type: string get: summary: List second factors for a user description: '' tags: - 2fa operationId: getSecondFactors responses: 200: $ref: '#/components/responses/SecondFactors' 404: $ref: '#/components/responses/NotFound' delete: summary: Delete all second factors for a user description: '' tags: - 2fa operationId: deleteSecondFactors responses: 204: $ref: '#/components/responses/NoContent' 404: $ref: '#/components/responses/NotFound' '/api/v1/secondFactor/{uid}/type/{type}': description: Second factors of a given type for a particular user parameters: - name: uid in: path required: true schema: type: string - name: type in: path required: true schema: type: string get: summary: List second factors for a user given its type description: '' tags: - 2fa operationId: getSecondFactorsByType responses: 200: $ref: '#/components/responses/SecondFactors' 404: $ref: '#/components/responses/NotFound' delete: summary: Delete all second factors of a given type for a user description: '' tags: - 2fa operationId: deleteSecondFactorsByType responses: 204: $ref: '#/components/responses/NoContent' 404: $ref: '#/components/responses/NotFound' '/api/v1/secondFactor/{uid}/id/{id}': description: Second factors of a given id for a particular user parameters: - name: uid in: path required: true schema: type: string - name: id in: path required: true schema: type: string get: summary: Get second factors for a user given its ID description: '' tags: - 2fa operationId: getSecondFactorsById responses: 200: $ref: '#/components/responses/SecondFactors' 404: $ref: '#/components/responses/NotFound' delete: summary: Delete a second factors for a user description: '' tags: - 2fa operationId: deleteSecondFactorsById responses: 204: $ref: '#/components/responses/NoContent' 404: $ref: '#/components/responses/NotFound' /api/v1/menu/cat: post: tags: - menucat summary: Create a new Menu Category operationId: addMenuCat requestBody: description: Menu Category to add content: application/json: schema: $ref: '#/components/schemas/MenuCat' required: true responses: 201: $ref: '#/components/responses/Created' 400: $ref: '#/components/responses/Error' 409: $ref: '#/components/responses/Conflict' /api/v1/menu/cat/findByConfKey: get: tags: - menucat summary: Finds Menu Categories by configuration key description: Takes a search pattern to be tested against existing categories operationId: findMenuCatByConfKey parameters: - name: pattern in: query description: Search pattern required: true schema: type: "string" examples: any: summary: Any value value: "*" prefix: summary: Given prefix value: "zone1-*" anywhere: summary: Substring value: "something" responses: 200: $ref: '#/components/responses/ManyMenuCat' 400: $ref: '#/components/responses/Error' /api/v1/menu/cat/{confKey}: get: tags: - menucat summary: Get Menu Category by configuration key description: Returns a single Category operationId: getMenuCatByConfKey parameters: - name: confKey in: path description: Configuration key of Menu Category required: true schema: $ref: '#/components/schemas/confKey' responses: 200: $ref: '#/components/responses/OneMenuCat' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' put: tags: - menucat summary: Replaces a Menu Category operationId: replaceMenuCat parameters: - name: confKey in: path description: Configuration key of Menu Category that needs to be replaced required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/MenuCat' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' patch: tags: - menucat summary: Updates a Menu Category operationId: updateMenuCat parameters: - name: confKey in: path description: Configuration key of Menu Category that needs to be updated required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/MenuCatUpdate' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' delete: tags: - menucat summary: Deletes a Menu Category operationId: deleteMenuCat parameters: - name: confKey in: path description: Configuration key of Menu Category to delete required: true schema: $ref: '#/components/schemas/confKey' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' /api/v1/menu/app/{cat}: get: tags: - menuapp summary: Get Menu Applications within a Menu Category description: Return existing applications within a menu category operationId: getMenuApps parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' responses: 200: $ref: '#/components/responses/ManyMenuApp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' post: tags: - menuapp summary: Create a new Menu Application within a Menu Category operationId: addMenuApp parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' requestBody: description: Menu Application to add content: application/json: schema: $ref: '#/components/schemas/MenuApp' required: true responses: 201: $ref: '#/components/responses/Created' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' /api/v1/menu/app/{cat}/findByConfKey: get: tags: - menuapp summary: Finds Menu Applications by configuration key within a Menu Category description: Takes a search pattern to be tested against existing applications within a menu category operationId: findMenuAppByConfKey parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' - name: pattern in: query description: Search pattern required: true schema: type: "string" examples: any: summary: Any value value: "*" prefix: summary: Given prefix value: "zone1-*" anywhere: summary: Substring value: "something" responses: 200: $ref: '#/components/responses/ManyMenuApp' 400: $ref: '#/components/responses/Error' /api/v1/menu/app/{cat}/{confKey}: get: tags: - menuapp summary: Get Menu Application within a Menu Category by configuration key description: Returns a single application operationId: getMenuAppByConfKey parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' - name: confKey in: path description: Configuration key of Menu Application required: true schema: $ref: '#/components/schemas/confKey' responses: 200: $ref: '#/components/responses/OneMenuApp' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' put: tags: - menuapp summary: Replaces a Menu Application operationId: replaceMenuApp parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' - name: confKey in: path description: Configuration key of Menu Application that needs to be replaced required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/MenuApp' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' patch: tags: - menuapp summary: Updates a Menu Application operationId: updateMenuApp parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' - name: confKey in: path description: Configuration key of Menu Application that needs to be updated required: true schema: $ref: '#/components/schemas/confKey' requestBody: content: application/json: schema: $ref: '#/components/schemas/MenuAppUpdate' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' 409: $ref: '#/components/responses/Conflict' delete: tags: - menuapp summary: Deletes a Menu Application operationId: deleteMenuApp parameters: - name: cat in: path description: Configuration key of Menu Category to work with required: true schema: $ref: '#/components/schemas/menuCatConfKey' - name: confKey in: path description: Configuration key of Menu Application to delete required: true schema: $ref: '#/components/schemas/confKey' responses: 204: $ref: '#/components/responses/NoContent' 400: $ref: '#/components/responses/Error' 404: $ref: '#/components/responses/NotFound' components: schemas: Status: type: object properties: name: type: string description: Descriptive name of the software version: type: string description: Version of the LemonLDAP::NG software status_sessions: type: string description: Status of the sessions database enum: - ok - ko - unknown status_psessions: type: string description: Status of the psessions database enum: - ok - ko - unknown status_config: type: string description: Status of the configuration database enum: - ok - ko status: type: string description: Global status enum: - ok - ko confKey: type: string pattern: '^\w[\w\.\-]*$' Error: type: object properties: error: type: string required: - error SamlSp: required: - confKey - metadata type: object properties: confKey: $ref: '#/components/schemas/confKey' metadata: type: string example: '