{
    "swagger":"2.0",
    "info":{
        "description":"Describes the REST API for performing CRUD operations on access policy in OIG",
        "version":"2021.10.18",
        "title":"REST API for Access Policy Management in OIG 12.2.1.4.0",
        "x-summary":"Describes the REST API for performing CRUD operations on access policy in OIG"
    },
    "basePath":"/iam/governance/adminservice/api/v1",
    "tags":[
        {
            "name":"AccessPolicy"
        }
    ],
    "paths":{
        "/accesspolicies":{
            "post":{
                "tags":[
                    "AccessPolicy"
                ],
                "summary":"Create Access Policies",
                "description":"in Oracle Identity Governance",
                "operationId":"createAccessPolicies",
                "consumes":[
                    "application/json"
                ],
                "produces":[
                    "application/json"
                ],
                "parameters":[
                    {
                        "in":"body",
                        "name":"Access Policies Content",
                        "description":"The following example shows the contents of the request body in JSON format.",
                        "required":true,
                        "schema":{
                            "$ref":"#/definitions/accesspolicies"
                        }
                    }
                ],
                "responses":{
                    "200":{
                        "description":"Access Policy created successfully"
                    },
                    "400":{
                        "description":"Bad Request"
                    },
                    "500":{
                        "description":"Internal Server Error"
                    }
                },
                "x-internal-id":"accesspolicies-post",
                "x-filename-id":"accesspolicies-post"
            },
            "get":{
                "tags":[
                    "AccessPolicy"
                ],
                "summary":"Get All Access Policies",
                "description":"Returns all the access policies basic details like id, name, and description. Access policies can be filtered based on name and description for example ?name=AP1&description=AP1Desc",
                "operationId":"getAllAccessPolicies",
                "produces":[
                    "application/json"
                ],
                "parameters":[
                    {
                        "in":"query",
                        "name":"name",
                        "description":"The name of the Access Policy",
                        "required":false,
                        "type":"string"
                    },
                    {
                        "in":"query",
                        "name":"description",
                        "description":"The description of the Access Policy",
                        "required":false,
                        "type":"string"
                    }
                ],
                "responses":{
                    "200":{
                        "description":"Access Policies"
                    },
                    "400":{
                        "description":"Bad Request"
                    },
                    "500":{
                        "description":"Internal Server Error"
                    }
                },
                "x-internal-id":"accesspolicies-get",
                "x-filename-id":"accesspolicies-get"
            }
        },
        "/accesspolicies/{policyId}":{
            "put":{
                "tags":[
                    "AccessPolicy"
                ],
                "summary":"Update a specific Access Policy",
                "description":"in Oracle Identity Governance",
                "operationId":"updateAccessPolicyByID",
                "consumes":[
                    "application/json"
                ],
                "produces":[
                    "application/json"
                ],
                "parameters":[
                    {
                        "in":"body",
                        "name":"Access Policy Content",
                        "description":"The following example shows the contents of the request body in JSON format.",
                        "required":true,
                        "schema":{
                            "$ref":"#/definitions/accessPolicy"
                        }
                    },
                    {
                        "in":"path",
                        "name":"policyId",
                        "description":"Access Policy Id",
                        "required":true,
                        "type":"integer"
                    }
                ],
                "responses":{
                    "200":{
                        "description":"Access Policy Updated Successfully"
                    },
                    "400":{
                        "description":"Bad Request"
                    },
                    "500":{
                        "description":"Internal Server Error"
                    }
                },
                "x-internal-id":"accesspolicies-{policyId}-put",
                "x-filename-id":"accesspolicies-policyid-put"
            },
            "get":{
                "tags":[
                    "AccessPolicy"
                ],
                "summary":"Return a specific Access Policy",
                "description":"Returns a specific Access Policy based on Access Policy  Id",
                "operationId":"getAccessPolicyByID",
                "produces":[
                    "application/json"
                ],
                "parameters":[
                    {
                        "in":"path",
                        "name":"policyId",
                        "description":"The Access Policy Id",
                        "required":true,
                        "type":"integer"
                    }
                ],
                "responses":{
                    "200":{
                        "description":"Access Policy",
                        "schema":{
                            "$ref":"#/definitions/accessPolicy"
                        }
                    },
                    "400":{
                        "description":"Bad Request"
                    },
                    "500":{
                        "description":"Internal Server Error"
                    }
                },
                "x-internal-id":"accesspolicies-{policyId}-get",
                "x-filename-id":"accesspolicies-policyid-get"
            },
            "delete":{
                "tags":[
                    "AccessPolicy"
                ],
                "summary":"Delete a specific Access Policy",
                "description":"based on Access Policy Id",
                "operationId":"deleteAccessPolicyByID",
                "produces":[
                    "application/json"
                ],
                "parameters":[
                    {
                        "in":"path",
                        "name":"policyId",
                        "description":"The Access Policy Id",
                        "required":true,
                        "type":"integer"
                    }
                ],
                "responses":{
                    "204":{
                        "description":"Access Policy deleted successfully"
                    },
                    "400":{
                        "description":"Bad Request"
                    },
                    "500":{
                        "description":"Internal Server Error"
                    }
                },
                "x-internal-id":"accesspolicies-{policyId}-delete",
                "x-filename-id":"accesspolicies-policyid-delete"
            }
        }
    },
    "definitions":{
        "accesspolicies":{
            "description":"List of access policies to be created",
            "properties":{
                "accessPolicies":{
                    "type":"array",
                    "items":{
                        "$ref":"#/definitions/accessPolicy"
                    }
                }
            }
        },
        "accessPolicy":{
            "description":"Access Policy details",
            "properties":{
                "name":{
                    "type":"string",
                    "description":"Name of the Access Policy"
                },
                "description":{
                    "type":"string",
                    "description":"Description of the Access Policy"
                },
                "priority":{
                    "type":"string",
                    "description":"Priority of the Access Policy"
                },
                "retrofit":{
                    "type":"boolean"
                },
                "owner":{
                    "$ref":"#/definitions/owner"
                },
                "provisionedApplications":{
                    "type":"array",
                    "items":{
                        "$ref":"#/definitions/provisionedApplications"
                    },
                    "description":"Details of Provisioned Application"
                },
                "deniedApplications":{
                    "type":"array",
                    "items":{
                        "$ref":"#/definitions/deniedApplications"
                    },
                    "description":"Details of Denied Application"
                }
            }
        },
        "deniedApplications":{
            "properties":{
                "name":{
                    "type":"string",
                    "description":"Name of the Denied Application"
                }
            }
        },
        "provisionedApplications":{
            "properties":{
                "name":{
                    "type":"string",
                    "description":"Name of the Provisioned Application"
                },
                "constraint":{
                    "type":"string",
                    "enum":[
                        "DISABLE",
                        "REVOKE"
                    ],
                    "description":"Constraint. Valid values are DISABLE/REVOKE"
                },
                "neor":{
                    "type":"boolean",
                    "description":"Keep Account Active if entitlement exists outside the role",
                    "default":false
                },
                "general":{
                    "type":"object",
                    "description":"Parent form details",
                    "additionalProperties":{
                        "type":"string"
                    }
                },
                "childobjects":{
                    "type":"array",
                    "items":{
                        "$ref":"#/definitions/childobject"
                    }
                }
            }
        },
        "childobject":{
            "properties":{
                "description":{
                    "type":"string",
                    "description":"Label of the child form."
                },
                "records":{
                    "type":"array",
                    "description":"Child form details",
                    "items":{
                        "type":"object",
                        "additionalProperties":{
                            "type":"string"
                        }
                    }
                }
            }
        },
        "owner":{
            "description":"Owner",
            "properties":{
                "name":{
                    "type":"string",
                    "description":"Owner login id for example xelsysadm"
                },
                "type":{
                    "type":"string",
                    "enum":[
                        "USER",
                        "ROLE"
                    ],
                    "description":"Type of Owner. Valid values are USER/ROLE"
                }
            }
        }
    }
}