{
  "openapi": "3.0.0",
  "info": {
    "title": "REST4i - QSYS Services",
    "description": "QSYS Services provide APIs for accessing QSYS objects.",
    "version": "1.0.7-rest4i",
    "contact": {
      "name": "API Support",
      "url": "https://github.com/rest4i"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "/rest4i/api"
    }
  ],
  "tags": [
    {
      "name": "QSYS Services",
      "description": "QSYS Services provide APIs for accessing QSYS objects."
    }
  ],
  "paths": {
    "/v1/qsys/search/{objectName}": {
      "get": {
        "tags": ["QSYS Services"],
        "summary": "Returns a list of QSYS.LIB objects that match the search criteria.",
        "description": "Returns a list of QSYS.LIB objects that match the search criteria. The filter is the object name, and may be a value of *ALL, in which case all objects that match the search criteria is returned, or a generic name. A generic name is a character string that contains one or more characters followed by an asterisk (*). If a generic name is specified, all objects that have names with the same prefix as the generic name are returned.",
        "operationId": "qsysGetQsysObjects",
        "parameters": [
          {
            "name": "Authorization",
            "in": "header",
            "description": "The authorization HTTP header.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "objectLibrary",
            "in": "query",
            "description": "The library or set of libraries that are searched for objects. Valid values are a specific name, or one of the following special values: *ALL - All libraries are searched. *ALLUSR - All user libraries are searched. *CURLIB - The current library is searched. *LIBL - The library list is searched. *USRLIBL - The user portion of the library list is searched.",
            "schema": {
              "type": "string",
              "default": "*USRLIBL"
            }
          },
          {
            "name": "objectType",
            "in": "query",
            "description": "The type of object to search. Valid values include: *FILE, *PGM, *LIB, etc., or *ALL.",
            "schema": {
              "type": "string",
              "default": "*ALL"
            }
          },
          {
            "name": "objectSubtype",
            "in": "query",
            "description": "Object subtype. For example, PF-SRC, PF-DTA, SAVF, etc., or *ALL. Note that not all objects have subtypes.",
            "schema": {
              "type": "string",
              "default": "*ALL"
            }
          },
          {
            "name": "memberName",
            "in": "query",
            "description": "The member name to match for objects of type PF-SRC or PF-DTA. Valid values are a specific name, or an extended generic name where the asterisk (*) may be placed in any part of the name, or *ALL.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "memberType",
            "in": "query",
            "description": "The member type to match for members of objects of type PF-SRC or PF-DTA. Valid values are a specific name, such as C, CBLLE, RPGLE, SQLRPGLE, etc., or *ALL.",
            "schema": {
              "type": "string",
              "default": "*ALL"
            }
          },
          {
            "name": "objectName",
            "in": "path",
            "description": "The object name. Valid values are a specific name, a generic name (for example, AM*), or one of the following special values: *ALL - All object names are searched. *ALLUSR - All objects that are libraries in QSYS or the library list are searched.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request.",
            "content": {
              "application/json": {
                "example": {
                  "objects": [
                    {
                      "path": "/QSYS.LIB/USER1.LIB/AXISLIBS.FILE",
                      "description": "",
                      "isDir": false,
                      "subType": "SAVF"
                    },
                    {
                      "path": "/QSYS.LIB/USER1.LIB/DEALER.FILE",
                      "description": "",
                      "isDir": true,
                      "subType": "PF-DTA"
                    },
                    {
                      "path": "/QSYS.LIB/USER1.LIB/QCLSRC.FILE",
                      "description": "\"test\"",
                      "isDir": true,
                      "subType": "PF-SRC"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request was made.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "403": {
            "description": "The request is forbidden.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "The specified resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Unable to process the request due to an internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerHttpAuthentication": []
          },
          {
            "basicHttpAuthentication": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "details": {
            "type": "object"
          }
        }
      }
    },
    "securitySchemes": {
      "bearerHttpAuthentication": {
        "type": "http",
        "description": "Bearer token authentication.",
        "scheme": "bearer",
        "bearerFormat": "Bearer [token]"
      },
      "basicHttpAuthentication": {
        "type": "http",
        "description": "Basic authentication.",
        "scheme": "basic"
      }
    }
  }
}
