OpenAPI Specification
openapi: 3.1.0
info:
description: The ConductorOne API is a HTTP API for managing ConductorOne resources.
title: ConductorOne Access Conflict Policy API
version: 0.1.0-alpha
servers:
- description: The ConductorOne API server for the current tenant.
url: https://{tenantDomain}.conductor.one
variables:
tenantDomain:
default: example
description: The domain of the tenant to use for this request.
security:
- bearerAuth: []
oauth: []
tags:
- name: Policy
paths:
/api/v1/policies:
get:
description: List policies.
operationId: c1.api.policy.v1.Policies.List
parameters:
- in: query
name: page_size
schema:
description: The pageSize field.
format: int32
readOnly: false
type: integer
- in: query
name: page_token
schema:
description: The pageToken field.
readOnly: false
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.ListPolicyResponse'
description: Successful response
summary: List
tags:
- Policy
x-speakeasy-group: Policies
x-speakeasy-name-override: List
post:
description: Create a policy.
operationId: c1.api.policy.v1.Policies.Create
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.CreatePolicyRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.CreatePolicyResponse'
description: The CreatePolicyResponse message contains the created policy object.
summary: Create
tags:
- Policy
x-speakeasy-entity-operation:
terraform-resource: Policy#create
x-speakeasy-group: Policies
x-speakeasy-name-override: Create
/api/v1/policies/{id}:
delete:
description: Delete a policy by ID.
operationId: c1.api.policy.v1.Policies.Delete
parameters:
- in: path
name: id
required: true
schema:
description: The Id of the policy to delete.
readOnly: false
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.DeletePolicyRequestInput'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.DeletePolicyResponse'
description: Empty response with a status code indicating success.
summary: Delete
tags:
- Policy
x-speakeasy-entity-operation:
terraform-resource: Policy#delete
x-speakeasy-group: Policies
x-speakeasy-name-override: Delete
get:
description: Get a policy by ID.
operationId: c1.api.policy.v1.Policies.Get
parameters:
- in: path
name: id
required: true
schema:
description: The id field.
readOnly: false
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.GetPolicyResponse'
description: The GetPolicyResponse message contains the policy object.
summary: Get
tags:
- Policy
x-speakeasy-entity-operation:
terraform-datasource: null
terraform-resource: Policy#read
x-speakeasy-group: Policies
x-speakeasy-name-override: Get
post:
description: Update a policy by providing a policy object and an update mask.
operationId: c1.api.policy.v1.Policies.Update
parameters:
- in: path
name: id
required: true
schema:
description: The ID of the Policy.
readOnly: true
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.UpdatePolicyRequestInput'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.UpdatePolicyResponse'
description: The UpdatePolicyResponse message contains the updated policy object.
summary: Update
tags:
- Policy
x-speakeasy-entity-operation:
terraform-resource: Policy#update
x-speakeasy-group: Policies
x-speakeasy-name-override: Update
/api/v1/policies/test-account-provision-policy:
post:
description: Invokes the c1.api.policy.v1.AccountProvisionPolicyTest.Test method.
operationId: c1.api.policy.v1.AccountProvisionPolicyTest.Test
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.TestAccountProvisionPolicyRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.TestAccountProvisionPolicyResponse'
description: Successful response
summary: Test
tags:
- Policy
x-speakeasy-group: AccountProvisionPolicyTest
x-speakeasy-name-override: Test
/api/v1/policies/validate/cel:
post:
description: Validate policies
operationId: c1.api.policy.v1.PolicyValidate.ValidateCEL
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.EditorValidateRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.EditorValidateResponse'
description: Successful response
summary: Validate Cel
tags:
- Policy
x-speakeasy-group: PolicyValidate
x-speakeasy-name-override: ValidateCEL
/api/v1/search/policies:
post:
description: Search policies based on filters specified in the request body.
operationId: c1.api.policy.v1.PolicySearch.Search
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.SearchPoliciesRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/c1.api.policy.v1.SearchPoliciesResponse'
description: Successful response
summary: Search
tags:
- Policy
x-speakeasy-entity-operation:
terraform-datasource:
- Policy#read
- Policies#read
terraform-resource: null
x-speakeasy-group: PolicySearch
x-speakeasy-name-override: Search
x-speakeasy-pagination:
inputs:
- in: requestBody
name: pageToken
type: cursor
outputs:
nextCursor: $.nextPageToken
type: cursor
components:
schemas:
c1.api.policy.v1.Reject:
description: This policy step indicates that a ticket should have a denied outcome. This is a terminal approval state and is used to explicitly define the end of approval steps.
nullable: true
properties:
rejectMessage:
description: An optional message to include in the comments when a task is automatically rejected.
readOnly: false
type: string
title: Reject
type: object
x-speakeasy-name-override: Reject
c1.api.form.v1.SelectField:
description: The SelectField message.
nullable: true
properties:
options:
description: The options field.
items:
$ref: '#/components/schemas/c1.api.form.v1.SelectOption'
nullable: true
readOnly: false
type: array
title: Select Field
type: object
x-speakeasy-name-override: SelectField
c1.api.policy.v1.ConnectorProvision.DoNotSave:
description: The DoNotSave message.
nullable: true
title: Do Not Save
type: object
x-speakeasy-name-override: DoNotSave
c1.api.form.v1.RequiredTogether:
description: The RequiredTogether message.
nullable: true
title: Required Together
type: object
x-speakeasy-name-override: RequiredTogether
c1.api.policy.v1.Form:
description: The Form message.
nullable: true
properties:
form:
$ref: '#/components/schemas/c1.api.form.v1.Form'
title: Form
type: object
x-speakeasy-name-override: Form
c1.api.policy.v1.AppEntitlementReference:
description: This object references an app entitlement's ID and AppID.
properties:
appEntitlementId:
description: The ID of the Entitlement.
readOnly: false
type: string
appId:
description: The ID of the App this entitlement belongs to.
readOnly: false
type: string
title: App Entitlement Reference
type: object
x-speakeasy-name-override: AppEntitlementReference
validate.FieldRules:
description: "FieldRules encapsulates the rules for each type of field. Depending on the\n field, the correct set should be used to ensure proper validations.\n\nThis message contains a oneof named type. Only a single field of the following list may be set at a time:\n - float\n - double\n - int32\n - int64\n - uint32\n - uint64\n - sint32\n - sint64\n - fixed32\n - fixed64\n - sfixed32\n - sfixed64\n - bool\n - string\n - bytes\n - enum\n - repeated\n - map\n - any\n - duration\n - timestamp\n"
properties:
any:
$ref: '#/components/schemas/validate.AnyRules'
bool:
$ref: '#/components/schemas/validate.BoolRules'
bytes:
$ref: '#/components/schemas/validate.BytesRules'
double:
$ref: '#/components/schemas/validate.DoubleRules'
duration:
$ref: '#/components/schemas/validate.DurationRules'
enum:
$ref: '#/components/schemas/validate.EnumRules'
fixed32:
$ref: '#/components/schemas/validate.Fixed32Rules'
fixed64:
$ref: '#/components/schemas/validate.Fixed64Rules'
float:
$ref: '#/components/schemas/validate.FloatRules'
int32:
$ref: '#/components/schemas/validate.Int32Rules'
int64:
$ref: '#/components/schemas/validate.Int64Rules'
map:
$ref: '#/components/schemas/validate.MapRules'
message:
$ref: '#/components/schemas/validate.MessageRules'
repeated:
$ref: '#/components/schemas/validate.RepeatedRules'
sfixed32:
$ref: '#/components/schemas/validate.SFixed32Rules'
sfixed64:
$ref: '#/components/schemas/validate.SFixed64Rules'
sint32:
$ref: '#/components/schemas/validate.SInt32Rules'
sint64:
$ref: '#/components/schemas/validate.SInt64Rules'
string:
$ref: '#/components/schemas/validate.StringRules'
timestamp:
$ref: '#/components/schemas/validate.TimestampRules'
uint32:
$ref: '#/components/schemas/validate.UInt32Rules'
uint64:
$ref: '#/components/schemas/validate.UInt64Rules'
title: Field Rules
type: object
x-speakeasy-name-override: FieldRules
c1.api.policy.v1.DeletePolicyResponse:
description: Empty response with a status code indicating success.
title: Delete Policy Response
type: object
x-speakeasy-name-override: DeletePolicyResponse
c1.api.policy.v1.AppGroupApproval:
description: The AppGroupApproval object provides the configuration for setting a group as the approvers of an approval policy step.
nullable: true
properties:
allowSelfApproval:
description: Configuration to allow self approval if the target user is a member of the group during this step.
readOnly: false
type: boolean
appGroupId:
description: The ID of the group specified for approval.
readOnly: false
type: string
appId:
description: The ID of the app that contains the group specified for approval.
readOnly: false
type: string
fallback:
description: Configuration to allow a fallback if the group is empty.
readOnly: false
type: boolean
fallbackGroupIds:
description: Configuration to specify which groups to fallback to if fallback is enabled and the group is empty.
items:
$ref: '#/components/schemas/c1.api.policy.v1.AppEntitlementReference'
nullable: true
readOnly: false
type: array
fallbackUserIds:
description: Configuration to specific which users to fallback to if fallback is enabled and the group is empty.
items:
type: string
nullable: true
readOnly: false
type: array
isGroupFallbackEnabled:
description: Configuration to enable fallback for group fallback.
readOnly: false
type: boolean
title: App Group Approval
type: object
x-speakeasy-name-override: AppGroupApproval
c1.api.policy.v1.SearchPoliciesRequest:
description: Search Policies by a few properties.
properties:
displayName:
description: Search for policies with a case insensitive match on the display name.
readOnly: false
type: string
excludePolicyIds:
description: The policy IDs to exclude from the search.
items:
type: string
nullable: true
readOnly: false
type: array
includeDeleted:
description: The includeDeleted field.
readOnly: false
type: boolean
pageSize:
description: The pageSize where 0 <= pageSize <= 100. Values < 10 will be set to 10. A value of 0 returns the default page size (currently 25)
format: int32
readOnly: false
type: integer
pageToken:
description: The pageToken field.
readOnly: false
type: string
policyTypes:
description: The policy type to search on. This can be POLICY_TYPE_GRANT, POLICY_TYPE_REVOKE, POLICY_TYPE_CERTIFY, POLICY_TYPE_ACCESS_REQUEST, or POLICY_TYPE_PROVISION.
items:
enum:
- POLICY_TYPE_UNSPECIFIED
- POLICY_TYPE_GRANT
- POLICY_TYPE_REVOKE
- POLICY_TYPE_CERTIFY
- POLICY_TYPE_ACCESS_REQUEST
- POLICY_TYPE_PROVISION
type: string
x-speakeasy-unknown-values: allow
nullable: true
readOnly: false
type: array
query:
description: Query the policies with a fuzzy search on display name and description.
readOnly: false
type: string
refs:
description: The refs field.
items:
$ref: '#/components/schemas/c1.api.policy.v1.PolicyRef'
nullable: true
readOnly: false
type: array
title: Search Policies Request
type: object
x-speakeasy-name-override: SearchPoliciesRequest
c1.api.policy.v1.ConnectorProvision:
description: "Indicates that a connector should perform the provisioning. This object has no fields.\n\nThis message contains a oneof named provision_type. Only a single field of the following list may be set at a time:\n - defaultBehavior\n - account\n - deleteAccount\n"
nullable: true
properties:
account:
$ref: '#/components/schemas/c1.api.policy.v1.ConnectorProvision.AccountProvision'
defaultBehavior:
$ref: '#/components/schemas/c1.api.policy.v1.ConnectorProvision.DefaultBehavior'
deleteAccount:
$ref: '#/components/schemas/c1.api.policy.v1.ConnectorProvision.DeleteAccount'
title: Connector Provision
type: object
x-speakeasy-name-override: ConnectorProvision
c1.api.policy.v1.PolicyPostActions:
description: "These are actions to happen after a policy is complete.\n\nThis message contains a oneof named action. Only a single field of the following list may be set at a time:\n - certifyRemediateImmediately\n"
properties:
certifyRemediateImmediately:
description: "ONLY valid when used in a CERTIFY Ticket Type:\n Causes any deprovision or change in a grant to be applied when Certify Ticket is closed.\nThis field is part of the `action` oneof.\nSee the documentation for `c1.api.policy.v1.PolicyPostActions` for more details."
nullable: true
readOnly: false
type: boolean
title: Policy Post Actions
type: object
x-speakeasy-name-override: PolicyPostActions
c1.api.form.v1.FileField:
description: "The FileField message.\n\nThis message contains a oneof named view. Only a single field of the following list may be set at a time:\n - fileInputField\n\n\nThis message contains a oneof named _max_file_size. Only a single field of the following list may be set at a time:\n - maxFileSize\n"
nullable: true
properties:
acceptedFileTypes:
description: The acceptedFileTypes field.
items:
type: string
nullable: true
readOnly: false
type: array
fileInputField:
$ref: '#/components/schemas/c1.api.form.v1.FileInputField'
maxFileSize:
description: 'The maxFileSize field.
This field is part of the `_max_file_size` oneof.
See the documentation for `c1.api.form.v1.FileField` for more details.'
format: int64
nullable: true
readOnly: false
type: string
title: File Field
type: object
x-speakeasy-name-override: FileField
c1.api.policy.v1.ManualProvision:
description: Manual provisioning indicates that a human must intervene for the provisioning of this step.
nullable: true
properties:
instructions:
description: This field indicates a text body of instructions for the provisioner to indicate.
readOnly: false
type: string
userIds:
description: An array of users that are required to provision during this step.
items:
type: string
nullable: true
readOnly: false
type: array
title: Manual Provision
type: object
x-speakeasy-name-override: ManualProvision
c1.api.policy.v1.PolicySteps:
description: The PolicySteps message.
properties:
steps:
description: An array of policy steps indicating the processing flow of a policy. These steps are oneOfs, and only one property may be set for each array index at a time.
items:
$ref: '#/components/schemas/c1.api.policy.v1.PolicyStep'
nullable: true
readOnly: false
type: array
title: Policy Steps
type: object
x-speakeasy-name-override: PolicySteps
c1.api.policy.v1.WaitCondition:
description: The WaitCondition message.
nullable: true
properties:
condition:
description: The condition that has to be true for this wait condition to continue.
readOnly: false
type: string
title: Wait Condition
type: object
x-speakeasy-name-override: WaitCondition
c1.api.policy.v1.SelfApproval:
description: The self approval object describes the configuration of a policy step that needs to be approved by the target of the request.
nullable: true
properties:
assignedUserIds:
description: The array of users determined to be themselves during approval. This should only ever be one person, but is saved because it may change if the owner of an app user changes while the ticket is open.
items:
type: string
nullable: true
readOnly: true
type: array
fallback:
description: Configuration to allow a fallback if the identity user of the target app user cannot be determined.
readOnly: false
type: boolean
fallbackUserIds:
description: Configuration to specific which users to fallback to if fallback is enabled and the identity user of the target app user cannot be determined.
items:
type: string
nullable: true
readOnly: false
type: array
title: Self Approval
type: object
x-speakeasy-name-override: SelfApproval
c1.api.form.v1.AtLeastOne:
description: The AtLeastOne message.
nullable: true
title: At Least One
type: object
x-speakeasy-name-override: AtLeastOne
c1.api.form.v1.MutuallyExclusive:
description: The MutuallyExclusive message.
nullable: true
title: Mutually Exclusive
type: object
x-speakeasy-name-override: MutuallyExclusive
validate.EnumRules:
description: EnumRules describe the constraints applied to enum values
nullable: true
properties:
const:
description: Const specifies that this field must be exactly the specified value
format: int32
readOnly: false
type: integer
definedOnly:
description: "DefinedOnly specifies that this field must be only one of the defined\n values for this enum, failing on any undefined value."
readOnly: false
type: boolean
in:
description: "In specifies that this field must be equal to one of the specified\n values"
items:
format: int32
type: integer
nullable: true
readOnly: false
type: array
notIn:
description: "NotIn specifies that this field cannot be equal to one of the specified\n values"
items:
format: int32
type: integer
nullable: true
readOnly: false
type: array
title: Enum Rules
type: object
x-speakeasy-name-override: EnumRules
validate.TimestampRules:
description: "TimestampRules describe the constraints applied exclusively to the\n `google.protobuf.Timestamp` well-known type"
nullable: true
properties:
const:
format: date-time
readOnly: false
type: string
gt:
format: date-time
readOnly: false
type: string
gtNow:
description: "GtNow specifies that this must be greater than the current time. GtNow\n can only be used with the Within rule."
readOnly: false
type: boolean
gte:
format: date-time
readOnly: false
type: string
lt:
format: date-time
readOnly: false
type: string
ltNow:
description: "LtNow specifies that this must be less than the current time. LtNow\n can only be used with the Within rule."
readOnly: false
type: boolean
lte:
format: date-time
readOnly: false
type: string
required:
description: Required specifies that this field must be set
readOnly: false
type: boolean
within:
format: duration
readOnly: false
type: string
title: Timestamp Rules
type: object
x-speakeasy-name-override: TimestampRules
c1.api.policy.v1.Provision:
description: The provision step references a provision policy for this step.
nullable: true
properties:
assigned:
description: A field indicating whether this step is assigned.
readOnly: false
type: boolean
provisionPolicy:
$ref: '#/components/schemas/c1.api.policy.v1.ProvisionPolicy'
provisionTarget:
$ref: '#/components/schemas/c1.api.policy.v1.ProvisionTarget'
title: Provision
type: object
x-speakeasy-name-override: Provision
c1.api.form.v1.PasswordField:
description: The PasswordField message.
nullable: true
title: Password Field
type: object
x-speakeasy-name-override: PasswordField
validate.RepeatedRules:
description: RepeatedRules describe the constraints applied to `repeated` values
nullable: true
properties:
ignoreEmpty:
description: "IgnoreEmpty specifies that the validation rules of this field should be\n evaluated only if the field is not empty"
readOnly: false
type: boolean
items:
$ref: '#/components/schemas/validate.FieldRules'
maxItems:
description: "MaxItems specifies that this field must have the specified number of\n items at a maximum"
format: uint64
readOnly: false
type: string
minItems:
description: "MinItems specifies that this field must have the specified number of\n items at a minimum"
format: uint64
readOnly: false
type: string
unique:
description: "Unique specifies that all elements in this field must be unique. This\n contraint is only applicable to scalar and enum types (messages are not\n supported)."
readOnly: false
type: boolean
title: Repeated Rules
type: object
x-speakeasy-name-override: RepeatedRules
c1.api.policy.v1.AgentApproval:
description: The agent to assign the task to.
nullable: true
properties:
agentFailureAction:
description: The action to take if the agent fails to approve, deny, or reassign the task.
enum:
- APPROVAL_AGENT_FAILURE_ACTION_UNSPECIFIED
- APPROVAL_AGENT_FAILURE_ACTION_REASSIGN_TO_USERS
- APPROVAL_AGENT_FAILURE_ACTION_REASSIGN_TO_SUPER_ADMINS
- APPROVAL_AGENT_FAILURE_ACTION_SKIP_POLICY_STEP
readOnly: false
type: string
x-speakeasy-unknown-values: allow
agentMode:
description: The mode of the agent, full control, change policy only, or comment only.
enum:
- APPROVAL_AGENT_MODE_UNSPECIFIED
- APPROVAL_AGENT_MODE_FULL_CONTROL
- APPROVAL_AGENT_MODE_CHANGE_POLICY_ONLY
- APPROVAL_AGENT_MODE_COMMENT_ONLY
readOnly: false
type: string
x-speakeasy-unknown-values: allow
agentUserId:
description: The agent user ID to assign the task to.
readOnly: false
type: string
instructions:
description: Instructions for the agent.
readOnly: false
type: string
policyIds:
description: The allow list of policy IDs to re-route the task to.
items:
type: string
nullable: true
readOnly: false
type: array
reassignToUserIds:
description: The users to reassign the task to if the agent failure action is reassign to users.
items:
type: string
nullable: true
readOnly: false
type: array
title: Agent Approval
type: object
x-speakeasy-name-override: AgentApproval
validate.DurationRules:
description: "DurationRules describe the constraints applied exclusively to the\n `google.protobuf.Duration` well-known type"
nullable: true
properties:
const:
format: duration
readOnly: false
type: string
gt:
format: duration
readOnly: false
type: string
gte:
format: duration
readOnly: false
type: string
in:
description: "In specifies that this field must be equal to one of the specified\n values"
items:
format: duration
readOnly: false
type: string
nullable: true
readOnly: false
type: array
lt:
format: duration
readOnly: false
type: string
lte:
format: duration
readOnly: false
type: string
notIn:
description: "NotIn specifies that this field cannot be equal to one of the specified\n values"
items:
format: duration
readOnly: false
type: string
nullable: true
readOnly: false
type: array
required:
description: Required specifies that this field must be set
readOnly: false
type: boolean
title: Duration Rules
type: object
x-speakeasy-name-override: DurationRules
c1.api.form.v1.FieldRelationship:
description: "FieldRelationships can be used during form validation, or they can represent\n information that is necessary to when it comes to visually rendering the form\n\nThis message contains a oneof named kind. Only a single field of the following list may be set at a time:\n - requiredTogether\n - atLeastOne\n - mutuallyExclusive\n"
properties:
atLeastOne:
$ref: '#/components/schemas/c1.api.form.v1.AtLeastOne'
fieldNames:
description: The names of the fields that share this relationship
items:
type: string
nullable: true
readOnly: false
type: array
mutuallyExclusive:
$ref: '#/components/schemas/c1.api.form.v1.MutuallyExclusive'
requiredTogether:
$ref: '#/components/schemas/c1.api.form.v1.RequiredTogether'
title: Field Relationship
type: object
x-speakeasy-name-override: FieldRelationship
c1.api.policy.v1.ResourceOwnerApproval:
description: The resource owner approval allows configuration of the approval step when the target approvers are the resource owners.
nullable: true
properties:
allowSelfApproval:
description: Configuration to allow self approval if the target user is an resource owner during this step.
readOnly: false
type: boolean
fallback:
description: Configuration to allow a fallback if the resource owner cannot be identified.
readOnly: false
type: boolean
fallbackUserIds:
description: Configuration to specific which users to fallback to if fallback is enabled and the resource owner cannot be identified.
items:
type: string
nullable: true
readOnly: false
type: array
title: Resource Owner Approval
type: object
x-speakeasy-name-override: ResourceOwnerApproval
c1.api.editor.v1.EditorMarker:
description: The EditorMarker message.
properties:
endColumn:
description: The endColumn field.
format: int32
readOnly: false
type: integer
endLineNumber:
description: The endLineNumber field.
format: int32
readOnly: false
type: integer
message:
description: The message field.
readOnly: false
type: string
severity:
description: The severity field.
enum:
- UNKNOWN
- HINT
- INFO
- WARNING
- ERROR
readOnly: false
type: string
x-speakeasy-unknown-values: allow
startColumn:
description: The startColumn field.
format: int32
readOnly: false
type: integer
startLineNumber:
description: The startLineNumber field.
format: int32
readOnly: false
type: integer
title: Editor Marker
type: object
x-speakeasy-name-override: EditorMarker
c1.api.policy.v1.ProvisionTarget:
description: ProvisionTarget indicates the specific app, app entitlement, and if known, the app user and grant duration of this provision step
properties:
appEntitlementId:
description: The app entitlement that should be provisioned.
readOnly: false
type: string
appId:
description: The app in wh
# --- truncated at 32 KB (109 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/c1/refs/heads/main/openapi/c1-policy-api-openapi.yml