{"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"audit-logs","__idx":0},"children":["Audit logs"]},{"$$mdtype":"Tag","name":"ConfigOptionRequirements","attributes":{"products":["Redoc","Revel","Reef","Realm"],"plans":["Enterprise+"]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Audit logs record the actions performed in your Redocly organization."," ","Each event includes details such as who performed the action, what the action was, and when it happened."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reunite has no audit logs page."," ","Export the audit logs through the Reunite API as a JSON or CSV file, then load it into your Security Information and Event Management tools, or keep it as evidence for a compliance review."," ","An export runs as a job: you start the job, check its status, then download the file."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-begin","__idx":1},"children":["Before you begin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Make sure you have the following:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An organization on a plan that includes audit logs."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/platform/organization/api-keys"},"children":["API key"]}," with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["org.auditLogs.read"]}," permission."," ","Organization owners have this permission by default."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your organization ID, which starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["org_"]},"."," ","To find it, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["General"]}," in the navigation menu on the left side of the page, and copy the value of the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["ID"]}," field."," ","The organization ID differs from the organization slug that appears in the Reunite URL."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"export-audit-logs-using-reunite-api","__idx":2},"children":["Export audit logs using Reunite API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To export the audit logs for your organization, use the Replay consoles embedded on this page."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each request in this guide sends the API key as a bearer token:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"Authorization: Bearer <your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Mock server"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The consoles on this page open on ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mock server"]},", which returns example data instead of your audit logs."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"send-requests-to-your-organization","__idx":3},"children":["Send requests to your organization"]},{"$$mdtype":"Tag","name":"NumberedList","attributes":{"type":"number","size":"small"},"children":[{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":1,"isLast":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the environment selector, choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Production main server"]},"."," ","If your organization is on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["app.cloud.eu.redocly.com"]},", choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Production EU server"]},"."]}]},{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":2,"isLast":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Expand the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authorization"]}," section and paste your API key."]}]},{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":3,"isLast":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Path"]}," tab, set the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["orgId"]}," value to your organization ID."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"start-an-export-job","__idx":4},"children":["Start an export job"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send a request to create the export job."]},{"$$mdtype":"Tag","name":"NumberedList","attributes":{"type":"number","size":"small"},"children":[{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":1,"isLast":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["start"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["end"]}," to the time range you need, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["format"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["json"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["csv"]},"."," ","The range must not exceed 31 days."," ","When you omit both dates, the export covers the last month."]}]},{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":2,"isLast":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To limit the export to specific event types, set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filter"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type:"]}," followed by one or more event types separated by commas, such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type:com.redocly.apiKey.created,com.redocly.apiKey.revoked"]},"."," ","The ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#event-types"},"children":["Event types"]}," section lists every value the filter accepts."," ","Omit the filter to export every type."]}]},{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":3,"isLast":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send the request."," ","The response returns the job ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", which starts with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["exp_"]},"."," ","Copy this value to use it in the next sections."]},{"$$mdtype":"Tag","name":"ReplayOpenApi","attributes":{"descriptionFile":"../customization/reunite-api/openapi.yaml","operationId":"createAuditLogExportJob","parameters":{"query":{"start":"2026-08-01","end":"2026-08-31","format":"json"}},"options":{},"environments":{},"replayResolved":{"apiStore":{"schemaStore":{"components/schemas/Problem":{"id":"components/schemas/Problem","kind":"json-schema","title":"Problem","data":{"type":"object","title":"Problem","properties":{"type":{"type":"string","format":"uri-reference","description":"URI reference that uniquely identifies the problem type only in the context of the provided API.\nOpposed to the specification in RFC 9457 (formerly RFC 7807), it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.\n","default":"about:blank","example":"/some/uri-reference"},"title":{"type":"string","description":"Short summary of the problem type.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some title for the error situation"},"status":{"type":"integer","format":"int32","description":"HTTP status code generated by the origin server for this occurrence of the problem.\n","minimum":100,"exclusiveMaximum":600,"example":400},"detail":{"type":"string","description":"Human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some description for the error situation"},"instance":{"type":"string","format":"uri-reference","description":"URI reference that identifies the specific occurrence of the problem. For example, by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code.\n","example":"/some/uri-reference#specific-occurrence-context"},"object":{"type":"string","enum":["problem"]},"requestId":{"type":"string","description":"Unique identifier of the request that produced this problem.\nShare it with support when reporting the error.\n","example":"req-abc-123"},"code":{"type":"string","description":"Machine-readable identifier of the problem, stable across wording changes of `title` and `detail`.\nPresent only for problems a client is expected to branch on; such a problem explains the occurrence in `detail`.\n","example":"usageLimitExceeded"},"reason":{"type":"string","description":"Machine-readable refinement of `code` that names which rule produced the problem.\n","example":"MAX_ACTIVE_RUNS_PER_ORGANIZATION_REACHED"},"errors":{"type":"array","description":"Additional information about the error situation.\nMay be omitted if no additional information is available.\n"}},"required":["type","title","status","object"]}},"components/schemas/Page":{"id":"components/schemas/Page","kind":"json-schema","title":"Page","data":{"type":"object","properties":{"nextPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the next page, relative to the API server URL.\nAppend the value to the server URL to get the next page.\nThe path keeps the query parameters of the request and sets `after` to the cursor of the next page.\nWhen `null`, there is no next page.","example":"/orgs/org_123/projects?limit=10&after=a25fgaksjf23la=="},"previousPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the previous page, relative to the API server URL.\nAppend the value to the server URL to get the previous page.\nThe path keeps the query parameters of the request and sets `before` to the cursor of the previous page.\nWhen `null`, there is no previous page.","example":"/orgs/org_123/projects?limit=10&before=bfg23aksjf23zb1=="},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Value showing how many items are in the page limit."}},"required":["nextPage","previousPage","limit"]}},"components/schemas/AuditLogExportJobCreated":{"id":"components/schemas/AuditLogExportJobCreated","kind":"json-schema","title":"AuditLogExportJobCreated","data":{"type":"object","description":"Details of the created audit log export job.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","createdAt"]}},"components/schemas/AuditLogExportStatus":{"id":"components/schemas/AuditLogExportStatus","kind":"json-schema","title":"AuditLogExportStatus","data":{"type":"string","description":"Current status of the export job.","enum":["IN_PROGRESS","COMPLETED","FAILED"]}},"components/schemas/AuditLogExportJob":{"id":"components/schemas/AuditLogExportJob","kind":"json-schema","title":"AuditLogExportJob","data":{"type":"object","description":"Audit log export job status and metadata.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"status":{"$ref":"#/components/schemas/AuditLogExportStatus"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","status","createdAt"]}},"components/schemas/AuditLogEventType":{"id":"components/schemas/AuditLogEventType","kind":"json-schema","title":"AuditLogEventType","data":{"type":"string","description":"CloudEvent `type` value emitted for an audit-loggable action.\nOnly events whose `type` is in this list are returned by the audit log export endpoints.","enum":["com.redocly.apiKey.created","com.redocly.apiKey.updated","com.redocly.apiKey.revoked","com.redocly.gitIdentity.linked","com.redocly.gitIdentity.unlinked","com.redocly.gitIdentity.removed","com.redocly.scimCredential.created","com.redocly.scimCredential.revoked","com.redocly.invite.created","com.redocly.invite.resent","com.redocly.userInvite.accepted","com.redocly.membership.created","com.redocly.membership.updated","com.redocly.membership.removed","com.redocly.team.created","com.redocly.team.deleted","com.redocly.teamMember.added","com.redocly.teamMember.removed","com.redocly.syncedTeamMember.added","com.redocly.syncedTeamMember.removed","com.redocly.teamManager.added","com.redocly.teamManager.removed","com.redocly.organization.created","com.redocly.organization.updated","com.redocly.organization.slugUpdated","com.redocly.organization.removed","com.redocly.project.created","com.redocly.project.updated","com.redocly.project.slugUpdated","com.redocly.project.urlUpdated","com.redocly.project.removed","com.redocly.projectConfig.updated","com.redocly.projectCustomDomain.verified","com.redocly.projectCustomDomain.removed","com.redocly.branch.created","com.redocly.branch.updated","com.redocly.branch.removed","com.redocly.gitAccess.pushed","com.redocly.remote.created","com.redocly.remote.deleted","com.redocly.gitCredential.rotated","com.redocly.notificationSettings.updated","com.redocly.notifications.disabled","com.redocly.subscription.updated","com.redocly.subscription.churned","com.redocly.subscription.reactivated","com.redocly.subscription.trialEnded","com.redocly.pullRequest.created","com.redocly.pullRequest.closed","com.redocly.pullRequest.reopened","com.redocly.pullRequest.merged","com.redocly.pullRequest.approved","com.redocly.pullRequest.requestedChanges","com.redocly.pullRequest.reviewRequested","com.redocly.pullRequest.readyForReview","com.redocly.pullRequest.markedAsDraft","com.redocly.pullRequest.commented","com.redocly.pullRequest.commitPushed","com.redocly.pullRequest.forcePushed","com.redocly.pullRequest.visualReviewUpdated"],"example":"com.redocly.pullRequest.created"}},"components/schemas/id":{"id":"components/schemas/id","kind":"json-schema","title":"id","data":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true}},"components/schemas/slug":{"id":"components/schemas/slug","kind":"json-schema","title":"slug","data":{"description":"Project slug.","type":"string","example":"project_red-owl-352"}},"components/schemas/AuditLogExportEvent":{"id":"components/schemas/AuditLogExportEvent","kind":"json-schema","title":"AuditLogExportEvent","data":{"type":"object","description":"One audit log export record.","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique event identifier.","example":"evt_2fxb8r4kq7m3ndp9z6ja501"},"object":{"type":"string","description":"Entity name.","enum":["event"],"readOnly":true},"type":{"$ref":"#/components/schemas/AuditLogEventType"},"time":{"type":"string","format":"date-time","description":"Event timestamp (ISO 8601).","example":"2026-04-15T14:43:08.172Z"},"subject":{"type":"string","description":"Subject URI or resource ID the event refers to.","example":"pr_7wnk3jm9xp2d4rv8qh5a01"},"projectId":{"$ref":"#/components/schemas/id"},"projectSlug":{"$ref":"#/components/schemas/slug"},"clientIp":{"type":"string","description":"IP address of the client that triggered the event.","example":"198.51.100.42"},"actor":{"oneOf":[{"type":"null"},{"type":"object","description":"Actor that triggered the event.","properties":{"id":{"type":"string","pattern":"^(usr|gid|wh|cj)_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01h2r5f6qy8kr42p8yfw52spq6"},"object":{"type":"string","enum":["user","gitIdentity","webhook","cronJob"],"example":"user"},"uri":{"type":"string","format":"uri","example":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"}},"required":["id","object","uri"],"additionalProperties":false}]}},"additionalProperties":false}},"components/schemas/CredentialType":{"id":"components/schemas/CredentialType","kind":"json-schema","title":"CredentialType","data":{"type":"string","format":"enum","description":"Credential type.","enum":["GITHUB_USER","GITLAB_USER","BITBUCKET_USER","AZURE_USER","URL","GITHUB_CLOUD_APP_INSTALLATION","GITHUB_SERVER_APP_INSTALLATION","GITHUB_SERVER_APP","GITLAB_SELF_MANAGED_APP","GITHUB_CLOUD_INTERNAL_APP_INSTALLATION","MCP_HEADERS","MCP_BEARER","MCP_API_KEY","SUPPORT_DESK"]}},"components/schemas/AuthType":{"id":"components/schemas/AuthType","kind":"json-schema","title":"AuthType","data":{"type":"string","format":"enum","description":"Credential auth type.","enum":["BASIC","PERSONAL_ACCESS_TOKEN","PERSONAL_ACCESS_TOKEN_FOR_ORGANIZATION","PROJECT_ACCESS_TOKEN","INSTALLATION_ACCESS_TOKEN","OAUTH2","BEARER","API_KEY"]}},"components/schemas/GitHubInstallationPublicCredential":{"id":"components/schemas/GitHubInstallationPublicCredential","kind":"json-schema","title":"GitHubInstallationPublicCredential","data":{"title":"GitHubInstallationPublicCredential","type":"object","properties":{"installationId":{"type":"number"},"namespaceId":{"type":"string"},"repositoryId":{"type":"string"}},"required":["namespaceId","repositoryId"]}},"components/schemas/GitHubEEServerAppPublicCredential":{"id":"components/schemas/GitHubEEServerAppPublicCredential","kind":"json-schema","title":"GitHubEEServerAppPublicCredential","data":{"title":"GitHubEEServerAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"clientId":{"type":"string"},"url":{"type":"string"},"apiUrl":{"type":"string"},"appName":{"type":"string"}},"required":["appId","clientId","url"]}},"components/schemas/GitLabSelfManagedAppPublicCredential":{"id":"components/schemas/GitLabSelfManagedAppPublicCredential","kind":"json-schema","title":"GitLabSelfManagedAppPublicCredential","data":{"title":"GitLabSelfManagedAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"url":{"type":"string"}},"required":["appId","url"]}},"components/schemas/AzureDevOpsUserPATPublicCredential":{"id":"components/schemas/AzureDevOpsUserPATPublicCredential","kind":"json-schema","title":"AzureDevOpsUserPATPublicCredential","data":{"title":"AzureDevOpsUserPATPublicCredential","type":"object","properties":{"organizationName":{"type":"string"}},"required":["organizationName"]}},"components/schemas/BitbucketCloudUserProjectTokenPublicCredential":{"id":"components/schemas/BitbucketCloudUserProjectTokenPublicCredential","kind":"json-schema","title":"BitbucketCloudUserProjectTokenPublicCredential","data":{"title":"BitbucketCloudUserProjectTokenPublicCredential","type":"object","properties":{"workspace":{"type":"string","description":"This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example: {workspace UUID}."}},"required":["workspace"]}},"components/schemas/McpPublicCredential":{"id":"components/schemas/McpPublicCredential","kind":"json-schema","title":"McpPublicCredential","data":{"title":"McpPublicCredential","type":"object","description":"Non-secret part of the credential of an agent MCP server: the header that carries the API key, and the names of the secret headers besides the authentication header. Values live in the secret store.","properties":{"header":{"description":"Request header that carries the API key; absent for a bearer token.","type":"string","example":"X-Api-Key"},"secretHeaderNames":{"description":"Names of the secret headers besides the authentication header.","type":"array","items":{"type":"string"},"example":["X-Tenant"]}},"required":["secretHeaderNames"]}},"components/schemas/CredentialSchemaBase":{"id":"components/schemas/CredentialSchemaBase","kind":"json-schema","title":"CredentialsSchemaBase","data":{"title":"CredentialsSchemaBase","type":"object","properties":{"id":{"description":"Credential ID. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["credential"],"readOnly":true},"uri":{"description":"Canonical URI for the credential resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/credentials/cred_01h1s5z6vf2mm1mz3hevnn9va7"},"type":{"$ref":"#/components/schemas/CredentialType"},"authType":{"$ref":"#/components/schemas/AuthType"},"name":{"type":"string"},"description":{"type":"string"},"publicData":{"type":"object","description":"Credential public data.","oneOf":[{"$ref":"#/components/schemas/GitHubInstallationPublicCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppPublicCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppPublicCredential"},{"$ref":"#/components/schemas/AzureDevOpsUserPATPublicCredential"},{"$ref":"#/components/schemas/BitbucketCloudUserProjectTokenPublicCredential"},{"$ref":"#/components/schemas/McpPublicCredential"}]},"oAuth2Data":{"type":"object","description":"Credential OAuth2 data.","readOnly":true,"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"OAuth2 ID. Unique identifier of OAuth2 account.","example":"4acc1f09-1751-6f79-b156-b6877ee205a2"},"userName":{"type":"string","description":"OAuth2 user name.","example":"john-doe"},"displayName":{"type":"string","description":"OAuth2 display name.","example":"John Doe"},"email":{"type":"string","description":"OAuth2 email.","example":"john-doe@mail.com"},"avatarUrl":{"type":"string","description":"OAuth2 avatar URL.","example":"https://avatars.githubusercontent.com/u/1?v=4"}},"required":["id","userName","displayName"]},"userId":{"description":"User ID this credentials belongs to. Unique identifier prefixed with `usr_`.","type":"string","pattern":"^usr_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"isShared":{"type":"boolean","default":false},"isBroken":{"type":"boolean","default":false,"readOnly":true},"parentId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Credential parent ID. Unique identifier prefixed with `cred_`.","example":"cred_01h4e71x94vd68a1farnbfapzg"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","object","uri","type","createdAt","updatedAt"]}},"components/schemas/AccessTokenCredential":{"id":"components/schemas/AccessTokenCredential","kind":"json-schema","title":"AccessTokenCredential","data":{"title":"AccessTokenCredential","type":"object","writeOnly":true,"properties":{"accessToken":{"type":"string"}},"required":["accessToken"]}},"components/schemas/OAuth2CodeCredential":{"id":"components/schemas/OAuth2CodeCredential","kind":"json-schema","title":"OAuth2CodeCredential","data":{"title":"OAuth2CodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"OAuth code to be used to get access/refresh tokens.","type":"string","example":"Yzk5ZDczMzRlNDEwY"}},"required":["code"]}},"components/schemas/GithubAppCodeCredential":{"id":"components/schemas/GithubAppCodeCredential","kind":"json-schema","title":"GithubAppCodeCredential","data":{"title":"GithubAppCodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"GithubApp code to be used to get exchange code on App secrets.","type":"string","example":"Yzk5ZDczMzRlNDEwY"},"url":{"description":"GithubApp url to be used to get exchange code on App secrets.","type":"string","example":"https://github.app.com"}},"required":["code","url"]}},"components/schemas/GitLabSelfManagedAppSecretCredential":{"id":"components/schemas/GitLabSelfManagedAppSecretCredential","kind":"json-schema","title":"GitLabSelfManagedAppSecretCredential","data":{"title":"GitLabSelfManagedAppSecretCredential","type":"object","writeOnly":true,"properties":{"appSecret":{"type":"string"},"webhookSecret":{"type":"string"}},"required":["appSecret"]}},"components/schemas/GitHubEEServerAppSecretCredential":{"id":"components/schemas/GitHubEEServerAppSecretCredential","kind":"json-schema","title":"GitHubEEServerAppSecretCredential","data":{"title":"GitHubEEServerAppSecretCredential","type":"object","writeOnly":true,"properties":{"clientSecret":{"type":"string"},"privateKey":{"type":"string"},"webhookSecret":{"type":"string"}}}},"components/schemas/CredentialSchema":{"id":"components/schemas/CredentialSchema","kind":"json-schema","title":"Credential","data":{"title":"Credential","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchemaBase"},{"type":"object","properties":{"secretData":{"type":"object","description":"Credential secret data.","writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/AccessTokenCredential"},{"$ref":"#/components/schemas/OAuth2CodeCredential"},{"$ref":"#/components/schemas/GithubAppCodeCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppSecretCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppSecretCredential"}]}}}]}},"components/schemas/CredentialPatchResponse":{"id":"components/schemas/CredentialPatchResponse","kind":"json-schema","title":"CredentialPatchResponse","data":{"title":"CredentialPatchResponse","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchema"},{"type":"object","properties":{"warnings":{"type":"array","description":"Problems that do not block the update.\nFor example, Reunite cannot set up a webhook for a repository that uses this credential.\n","readOnly":true,"items":{"type":"string","example":"Failed to set up webhook for repository \"fe5d7747-af71-449a-951b-f781f54603af\": Azure DevOps token does not have sufficient permissions. Please check token scopes."}}},"required":["warnings"]}]}},"components/schemas/CreateCredentialRotationRequest":{"id":"components/schemas/CreateCredentialRotationRequest","kind":"json-schema","title":"CreateCredentialRotationRequest","data":{"title":"CreateCredentialRotationRequest","type":"object","properties":{"credentialId":{"description":"ID of the credential whose access token is replaced. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7"},"secretData":{"description":"New access token for the credential.","$ref":"#/components/schemas/AccessTokenCredential"}},"required":["credentialId","secretData"]}},"components/schemas/Feedback":{"id":"components/schemas/Feedback","kind":"json-schema","title":"Feedback","data":{"type":"object","title":"Feedback","additionalProperties":false,"properties":{"id":{"description":"Feedback ID. Unique identifier prefixed with `fb_`.","type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"fb_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["feedback"],"readOnly":true},"uri":{"description":"Canonical URI for the feedback resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/feedback/fb_01h1s5z6vf2mm1mz3hevnn9va7"},"email":{"type":["string","null"],"format":"email","maxLength":254,"description":"Email address of user who submitted the feedback or `null`."},"path":{"type":"string","minLength":1,"maxLength":1000,"description":"Absolute URL of the page where feedback is submitted (for example from the browser location). A value that is not a valid URL is accepted, but the feedback is marked as spam.","example":"https://example.com/docs/guide"},"location":{"type":["string","null"],"maxLength":5000,"description":"Identifies the location of the component.\nThis could be a code sample."},"lang":{"type":"string","maxLength":20,"description":"Identifies the language of the component's location.\nThis could be the language of a code sample, such as `js`, `php`, or `txt`."},"feedbackComponent":{"type":"string","description":"Name that identifies UI component.","enum":["SENTIMENT","RATING","COMMENT","MOOD","PROBLEM","SCALE"]},"score":{"description":"Numeric value that maps to the feedback component, such as thumbs down (-1) or thumbs up (1), or a 1-5 star rating scale.","type":["integer","null"],"minimum":-1,"maximum":10},"maxScore":{"description":"Maximum score for the feedback component.","type":["integer","null"],"minimum":0,"maximum":10},"reasons":{"type":"array","description":"List of preset reasons for feedback.","items":{"type":"string","maxLength":5000,"description":"Reason for feedback."}},"comment":{"type":"string","maxLength":5000,"description":"Free-form text feedback."},"agent":{"type":["string","null"],"maxLength":200,"description":"Name of the AI agent that submitted the feedback, or `null` for user-submitted feedback.","example":"Cursor"},"targetFeature":{"type":["string","null"],"maxLength":500,"description":"Documentation feature the feedback refers to (for agent submissions), or `null` for user-submitted feedback.","example":"Respect Monitoring API"},"origin":{"type":"string","description":"Origin of the feedback. `FORM` is the feedback form on the page, `API` is a direct API call (for example an agent that follows `llms.txt` instructions), and `MCP` is the MCP server `submit-feedback` tool. When omitted on create, defaults to `API` if `agent` is set and to `FORM` otherwise.","enum":["FORM","API","MCP"],"example":"MCP"},"metadata":{"type":"object","description":"Extra tracking fields. The server sets `userAgent`, `ipAddress`, `platform`, and `email` (read-only). `id`, `firstName`, `lastName`, and `auth_time` pass through if present but are not verified; do not use for access or identity. Any other key is stored with its value redacted to a placeholder.","properties":{"userAgent":{"type":"string","description":"User agent string of the browser that submitted the feedback. Populated by the server from the `User-Agent` header.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","readOnly":true},"ipAddress":{"type":"string","description":"IP address of the user who submitted the feedback. Populated by the server.","example":"127.0.0.1","readOnly":true},"platform":{"type":"string","description":"Platform from which the feedback originates. Populated by the server from the `Sec-Ch-Ua-Platform` header.","example":"Windows NT 10.0; Win64; x64","readOnly":true},"email":{"type":"string","format":"email","description":"Email address from the user's authentication context. Populated by the server from OIDC claims.","example":"john.doe@acme.com","readOnly":true},"id":{"type":"string","description":"Unverified; whatever the client sent. Not a trusted user ID."},"firstName":{"type":"string","description":"Unverified; client-supplied if present."},"lastName":{"type":"string","description":"Unverified; client-supplied if present."},"auth_time":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Unverified; client-supplied. Not a server-asserted session or token time."}},"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","readOnly":true},"organizationId":{"description":"Organization ID. Unique identifier prefixed with `org_`.","type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"org_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"projectId":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","readOnly":true},"internalCommentUpdatedAt":{"type":"string","format":"date-time","description":"Date and time when the internal comment is updated.","readOnly":true},"internalCommentUpdatedById":{"type":"string","description":"ID of the user who updated the internal comment.","readOnly":true}},"required":["id","uri","path","feedbackComponent","createdAt","object","organizationId","projectId","status","origin"]}},"components/schemas/FeedbackList":{"id":"components/schemas/FeedbackList","kind":"json-schema","title":"FeedbackList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Feedback"}}},"required":["object","page","data"]}},"components/schemas/PatchFeedbackRequest":{"id":"components/schemas/PatchFeedbackRequest","kind":"json-schema","title":"Feedback PATCH request","data":{"type":"object","title":"Feedback PATCH request","minProperties":1,"properties":{"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","writeOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","writeOnly":true}}}},"components/schemas/GitProviderType":{"id":"components/schemas/GitProviderType","kind":"json-schema","title":"GitProviderType","data":{"type":"string","format":"enum","description":"Git provider type.","enum":["GITHUB_CLOUD","GITHUB_SERVER","GITLAB_CLOUD","GITLAB_SELF_MANAGED","BITBUCKET_CLOUD","BITBUCKET_DATACENTER","AZURE_DEVOPS_SERVICES","AZURE_DEVOPS_SERVER"]}},"components/schemas/GitProvider":{"id":"components/schemas/GitProvider","kind":"json-schema","title":"GitProvider","data":{"type":"object","description":"Git provider configuration.","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/GitProviderType"},"name":{"type":"string","example":"Redocly GitLab"},"publicConfig":{"type":"object","properties":{"url":{"type":"string","example":"https://gitlab.redocly.dev"},"clientId":{"type":"string","example":"05489443ec38b38f2327cdde9d5f51f284ae1d726130b300ecda0a259010c759"},"appName":{"type":"string","example":"redocly"}}},"isCustom":{"type":"boolean","description":"Indicates whether this provider is a custom provider added to the organization."}},"required":["id","type","name","isCustom"]}},"components/schemas/ProjectSource":{"id":"components/schemas/ProjectSource","kind":"json-schema","title":"ProjectSource","data":{"type":"object","properties":{"id":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Project source ID. Unique identifier prefixed with `rem_`.","readOnly":true},"uri":{"description":"Canonical URI for the project source resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/sources/rem_01hc2rvwxf7jyj1er504khx8e7"},"branchName":{"description":"Main branch of the project.","type":"string","example":"main"},"contentPath":{"description":"Path to the project content in the repository.","type":"string","example":"/"},"repoName":{"description":"Name of the repository. Present when Reunite can access the repository.","type":"string","example":"Repo Name"},"repoUrl":{"description":"URL of the repository. Present when Reunite can access the repository.","type":"string","example":"https://github.com/example/example"},"isInternal":{"description":"Whether the project content is stored in the Reunite-hosted repository instead of an external Git repository. Internal sources have no Git provider fields and no credential.","type":"boolean","example":true},"isMonorepo":{"description":"Whether the project content is in a folder of the repository rather than at its root.","type":"boolean","example":true},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"providerConfig":{"$ref":"#/components/schemas/GitProvider","description":"Git provider of the repository."},"canAccessRepo":{"type":"boolean","example":true,"description":"Whether Reunite can access the repository with the source credential. `false` usually means that the access token is expired or revoked."},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\nAbsent for internal sources."},"sourceId":{"type":"string","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Use `id` instead.","deprecated":true},"namespaceId":{"type":["string","null"],"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","example":"azure-test-org"},"repositoryId":{"type":"string","description":"Git provider identifier of the repository.","example":"redocly-testing"},"branchDeployStrategy":{"type":"string","description":"Which branches other than the main branch start builds.","enum":["NONE","SELECTED","ALL"]},"selectedDeployBranches":{"type":"array","description":"Branches that start a build when they're updated or a pull request targets them.","items":{"type":"string"}},"prDeploysEnabled":{"type":"boolean","description":"Whether pull requests start builds when they target the main branch or, with the `SELECTED` strategy, a branch in `selectedDeployBranches`.\nHas no effect with the `ALL` strategy, which builds every branch."},"forksPrDeploysEnabled":{"type":"boolean","description":"Whether build starts for PRs from forks."},"visualReviewCheckDisabled":{"type":"boolean","default":false,"description":"Whether the Visual review check is disabled. A disabled check is reported as skipped instead of pending."},"createdAt":{"description":"Time when Reunite created the project source.","type":"string","format":"date-time","readOnly":true},"updatedAt":{"description":"Time of the last change to the project source.","type":"string","format":"date-time","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["projectSource"],"readOnly":true}},"required":["id","uri","branchName","contentPath","isInternal","isMonorepo","branchDeployStrategy","selectedDeployBranches","prDeploysEnabled","forksPrDeploysEnabled","visualReviewCheckDisabled","createdAt","updatedAt","object"]}},"components/schemas/ProjectSourceList":{"id":"components/schemas/ProjectSourceList","kind":"json-schema","title":"ProjectSourceList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/ProjectSource"}}},"required":["object","page","data"]}},"components/schemas/MountPath":{"id":"components/schemas/MountPath","kind":"json-schema","title":"MountPath","data":{"type":"string","description":"Path to the folder in the local repository where remote content is mounted. Paths outside of the project's `contentPath` are not allowed.","example":"apis/test/@v1"}},"components/schemas/AutoSync":{"id":"components/schemas/AutoSync","kind":"json-schema","title":"AutoSync","data":{"type":"boolean","default":true,"description":"Whether Reunite syncs changes from the remote automatically."}},"components/schemas/AutoSyncDisabledAt":{"id":"components/schemas/AutoSyncDisabledAt","kind":"json-schema","title":"AutoSyncDisabledAt","data":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Time when Reunite turned off auto-sync after repeated failed updates.\n`null` when auto-sync is on or a user turned it off.","example":"2021-08-25T10:00:00.000Z"}},"components/schemas/AutoMerge":{"id":"components/schemas/AutoMerge","kind":"json-schema","title":"AutoMerge","data":{"type":"boolean","default":false,"description":"Auto merge changes from remote."}},"components/schemas/MountBranchName":{"id":"components/schemas/MountBranchName","kind":"json-schema","title":"MountBranchName","data":{"type":"string","description":"Name of the branch to mount.","example":"main"}},"components/schemas/GenericRemoteError":{"id":"components/schemas/GenericRemoteError","kind":"json-schema","title":"GenericRemoteError","data":{"oneOf":[{"type":"null"},{"type":"object","properties":{"autoMerge":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the auto merge failure."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the error."},"buildId":{"type":"string","description":"ID of the build that triggered the auto merge."}},"required":["message","timestamp"]}},"required":["autoMerge"]}],"readOnly":true}},"components/schemas/LastSyncedAt":{"id":"components/schemas/LastSyncedAt","kind":"json-schema","title":"LastSyncedAt","data":{"type":["string","null"],"format":"date-time","description":"Last time remote processed the default branch update.\n`null` when the remote has never been synced.\nFor URL remotes it is updated on interval specified for the remote.","example":"2021-08-25T10:00:00.000Z"}},"components/schemas/SyncAttempts":{"id":"components/schemas/SyncAttempts","kind":"json-schema","title":"SyncAttempts","data":{"type":"integer","description":"Number of failed attempts to sync the remote. If this value exceeds **6**, automatic synchronization is disabled.","example":1}},"components/schemas/UrlRemote":{"id":"components/schemas/UrlRemote","kind":"json-schema","title":"UrlRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","contentType","url","fileName","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"URL"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"string","enum":["FOLDER","FILE"]},"url":{"description":"URL to the remote content.","type":"string","example":"https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml"},"interval":{"type":"number","description":"Interval in seconds to sync URL remote content.","minimum":900,"default":1800,"example":900},"fileName":{"type":"string","description":"File name of the remote content.","example":"openapi.yaml"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"lastFinishedUrlUpdateId":{"type":["string","null"],"description":"ID of the last finished URL update.","example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"uri":{"type":"string","format":"uri","description":"Canonical URI for the URL remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"components/schemas/CicdRemote":{"id":"components/schemas/CicdRemote","kind":"json-schema","title":"CicdRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"CICD"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"null","readOnly":true},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"type":"string","format":"uri","description":"Canonical URI for the CICD remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"components/schemas/PushProjectBuildStatus":{"id":"components/schemas/PushProjectBuildStatus","kind":"json-schema","title":"PushProjectBuildStatus","data":{"type":"object","required":["deploy","scorecard"],"properties":{"deploy":{"type":"object","properties":{"url":{"type":["string","null"],"description":"Deployment URL."},"status":{"type":"string","description":"Status of project deployment.","enum":["pending","running","success","failed","skipped"],"example":"running"}},"required":["status","url"]},"scorecard":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Scorecard name.","example":"Scorecard: Compliance API"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Scorecard status description."},"url":{"type":"string","description":"Scorecard URL."}},"required":["name","status","description","url"]}}}}},"components/schemas/Push":{"id":"components/schemas/Push","kind":"json-schema","title":"Push","data":{"type":"object","required":["id","remoteIds","commit","uploadedFiles","isOutdated","hasChanges","status"],"properties":{"id":{"description":"Push ID. Unique identifier prefixed with `push_`.","type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"push_01h2captefvs9bpg3v6twqqj9n","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["push"],"readOnly":true},"remoteIds":{"type":"array","items":{"type":"string","description":"Remote IDs. Unique identifier prefixed with `rem_` for pushed remotes.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$"}},"remoteId":{"type":"string","description":"Remote ID. Unique identifier prefixed with `rem_` for pushed remotes. Used only for single remote push.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","deprecated":true},"commit":{"type":"object","required":["message","branchName","author"],"description":"Commit details.","properties":{"message":{"type":"string","description":"Commit message.","example":"chore: Add new API"},"branchName":{"type":"string","description":"Branch name.","example":"main"},"sha":{"type":["string","null"],"description":"SHA of the commit.","example":"f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"url":{"type":["string","null"],"format":"uri","description":"Commit URL.","example":"https://gitlab.com/example-user/example-project/-/commit/f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"createdAt":{"type":["string","null"],"format":"date-time","description":"Commit creation date.","example":"2020-01-01T00:00:00.000Z"},"namespaceId":{"type":["string","null"],"description":"Git namespace ID (organization login for GitHub).","example":"Redocly"},"repositoryId":{"type":["string","null"],"description":"Git repository ID.","example":"redoc"},"author":{"description":"Commit author details.","type":"object","required":["email","name"],"properties":{"name":{"description":"Commit author name.","example":"John Doe"},"email":{"type":"string","description":"Commit author email.","format":"email","example":"johndoe@example.com"},"image":{"type":["string","null"],"description":"Commit author image URL.\nIf not provided, the default image is used.\nIf the image is not accessible, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) can be used."}}},"statuses":{"type":"array","readOnly":true,"description":"List of commit statuses set by the platform to the commit that triggered push.","items":{"type":"object","properties":{"name":{"type":"string","description":"Commit status name.","example":"Scorecard: Compliance API (org-slug/project-slug/remote-mount-path (remote))"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Commit status description."},"url":{"type":["string","null"],"description":"Commit status URL."}},"required":["name","status","description","url"]}}}},"scoutJobId":{"type":["string","null"],"pattern":"^job_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"`PROCESS_GIT_REPO` job, if any. Required for Scout pushes. Unique identifier prefixed with `job_`.","example":"job_01h2captefvs9bpg3v6twqqj9n"},"scoutJobContext":{"type":"string","writeOnly":true,"description":"Context of the `PROCESS_GIT_REPO` job, if any.\nApplies to Scout pushes only.\nUsed as commit status context.","example":"Team A"},"replace":{"type":"boolean","description":"Whether to replace the existing files.\nIf provided, all files from the remote are removed and the new files are added.\nIf not provided, the existing files are kept and the new files are added, overwriting the existing files where they overlap.","example":true,"default":false},"files":{"type":"object","writeOnly":true,"description":"Map of files to upload.","additionalProperties":{"description":"Files to push.","type":"string","format":"binary"}},"uploadedFiles":{"type":"array","readOnly":true,"description":"List of pushed files.","items":{"type":"object","description":"Pushed file.","required":["path","mimeType"],"properties":{"path":{"type":"string","description":"File path.","example":"some-path/index.html"},"mimeType":{"type":"string","description":"File MIME type.","example":"text/html"}}}},"isMainBranch":{"type":"boolean","example":true,"description":"Is push provided to the main branch."},"isOutdated":{"type":"boolean","readOnly":true,"description":"Indicates whether the push is discarded.\nIn case several pushes are performed in a row, the one with most recent commit is applied only.\nAlways `false` when commit's `createdAt` is omitted.","example":false},"hasChanges":{"type":"boolean","readOnly":true,"description":"Indicates if pushed files have changes.","example":false},"status":{"type":"object","readOnly":true,"description":"Status of the corresponding preview and production builds.","required":["preview","production"],"properties":{"preview":{"$ref":"#/components/schemas/PushProjectBuildStatus"},"production":{"$ref":"#/components/schemas/PushProjectBuildStatus"}}}}}},"components/schemas/PushList":{"id":"components/schemas/PushList","kind":"json-schema","title":"PushList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Push"}}},"required":["object","page","data"]}},"components/schemas/GitRemote":{"id":"components/schemas/GitRemote","kind":"json-schema","title":"GitRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","repositoryId","branchName","contentPath","contentType","providerType","credentialId","uri","object"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"GIT"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Time when a user last created or updated the remote.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"ID of the user who created the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"ID of the user who last created or updated the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"namespaceId":{"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","type":["string","null"]},"repositoryId":{"description":"Git provider identifier of the repository.","type":"string"},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"description":"Path to the connected folder in the remote repository.","type":"string"},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential."},"branchName":{"description":"Branch name in the remote repository.","type":"string","example":"dev"},"contentType":{"type":"string","enum":["FOLDER","FILE"],"example":"FILE"},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"description":"Canonical URI for the remote resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"},"lastFinishedGitUpdateId":{"type":["string","null"],"description":"ID of the last finished Git update.","readOnly":true,"example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh"},"errors":{"$ref":"#/components/schemas/GenericRemoteError"}}}},"components/schemas/Remote":{"id":"components/schemas/Remote","kind":"json-schema","title":"Remote","data":{"oneOf":[{"$ref":"#/components/schemas/GitRemote"},{"$ref":"#/components/schemas/UrlRemote"},{"$ref":"#/components/schemas/CicdRemote"}],"discriminator":{"propertyName":"type","mapping":{"GIT":"#/components/schemas/GitRemote","URL":"#/components/schemas/UrlRemote","CICD":"#/components/schemas/CicdRemote"}}}},"components/schemas/RemoteList":{"id":"components/schemas/RemoteList","kind":"json-schema","title":"RemoteList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Remote"}}},"required":["object","page","data"]}},"schema_0":{"kind":"json-schema","data":{"type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `org_`."},"id":"schema_0"},"schema_1":{"kind":"json-schema","data":{"type":"string"},"id":"schema_1"},"schema_2":{"kind":"json-schema","data":{"type":"string","format":"date"},"id":"schema_2"},"schema_3":{"kind":"json-schema","data":{"type":"string","enum":["json","csv"],"default":"json"},"id":"schema_3"},"schema_4":{"kind":"json-schema","data":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"id":"schema_4"}},"exampleStore":{},"securitySchemeStore":{"ApiKey":{"id":"ApiKey","type":"http","scheme":"bearer","description":{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"API key is required to access API."},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{},"children":[],"type":"softbreak","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":"Create an API key by visiting "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"href":"https://app.cloud.redocly.com/"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"Platform"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"link","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" and navigating to "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"Access"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"strong","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" > "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"API Keys"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"strong","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" page."},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"inline","location":{"start":{"line":0},"end":{"line":2}}}],"type":"paragraph","location":{"start":{"line":0},"end":{"line":2}}}],"type":"document"}}},"specVersion":"3.1.0"},"definition":{"openapi":"3.1.0","info":{"description":"Redocly platform API is a REST API over HTTPS for accessing and managing Redocly platform resources.\n\nThe API supports the following use cases:\n\n- Automation of organization and project workflows\n- Integration with internal systems\n- Development of customer-facing integrations\n\nTechnical characteristics:\n\n- Resource-oriented URLs\n- JSON request and response bodies\n- Standard HTTP methods and status codes\n- Filtering and search on selected collection endpoints\n\nEndpoint availability depends on subscription plan, organization settings, and product rollout status.\nThe API description is the authoritative reference.\nOrganizations for which an endpoint is not enabled should contact support.\n\n## Authentication\n\nThe API uses API keys for authentication.\nAuthentication requirements are defined per operation in the API description.\n\nAPI keys are intended for server-to-server integration.\nAPI keys are created as described in [Manage API keys](https://redocly.com/docs/realm/reunite/organization/api-keys).\nThe key is transmitted as a Bearer token:\n\n```http\nAuthorization: Bearer <api_key>\n```\n\nKeys must meet the following requirements:\n\n- Stored in a secure secret management system (not in client-side application code)\n- Rotated on a regular basis\n- Revoked when no longer required\n- Limited to the minimum set of endpoints and environments necessary for the integration\n\nEvery operation states the authentication it accepts in its own `security` section.\nTypical responses include:\n\n- `401 Unauthorized` (missing, invalid, or expired credentials)\n- `403 Forbidden` (credentials are valid but insufficient for the requested action)\n\n## Pagination\n\nList endpoints implement cursor-based pagination.\nEach response includes a `page` object and the results in the `data` array.\n\nSupported query parameters:\n\n- `limit`: values from `1` to `100`, default `10`\n- `after` and `before`: cursor navigation\n- `sort`: for example `-id` or `id`\n\nThe `page` object contains:\n\n- `nextPage`: the path of the next page, or `null` when there is no next page\n- `previousPage`: the path of the previous page, or `null` when there is no previous page\n- `limit`\n\n`nextPage` and `previousPage` are paths relative to the API server URL.\nThey keep the query parameters of the request, such as `limit`, `filter`, and `sort`.\n`nextPage` sets `after` to the cursor of the next page, and `previousPage` sets `before` to the cursor of the previous page.\nTo get the adjacent page, append the value to the server URL as a string:\n\n```text\nhttps://app.cloud.redocly.com/api + /orgs/org_123/projects?limit=10&after=a25fgaksjf23la==\n= https://app.cloud.redocly.com/api/orgs/org_123/projects?limit=10&after=a25fgaksjf23la==\n```\n\nDo not resolve the value as a relative URL, for example with `new URL(nextPage, serverUrl)`.\nThe leading `/` replaces the `/api` path of the server URL.\n\nA typical sequence:\n\n1. Request the first page with `?limit=10`.\n2. Read `page.nextPage`.\n3. Request the server URL followed by `page.nextPage`.\n4. Continue until `nextPage` is `null`.\n\nThe cursors are opaque, and their internal structure is subject to change.\nTo build a request yourself, send the `after` value from `nextPage`, or the `before` value from `previousPage`, with your other query parameters.\n\n## Filter results\n\n**Filtering** uses the `?filter=` parameter with `field:value` syntax.\nThe supported forms include:\n\n- Exact match: `firstName:Casey`\n- Case-insensitive substring match: `firstName~jo`\n- Multiple values: `firstName:Casey,Jordan`, `status:success,pending`\n- Numeric or date-time ranges: `amount:1..10`, ISO 8601 date-times\n- Relative durations for date-time fields: `30d`, `2w`, `6mo`, `1y`, `all` (units: `s`, `m`, `h`, `d`, `w`, `mo`, `y`)\n- Nested fields: `team.user.email:casey.smith@acme-inc.com`\n- Negation: `-firstName:Casey`\n- Logical operators: `AND`, `OR`\n\nCombine multiple conditions by separating `field:value` pairs with a space.\nA space is treated as an implicit `AND`, so `firstName:Casey isAdmin:true` and `firstName:Casey AND isAdmin:true` are equivalent.\nUse `OR` to match alternatives.\n`AND` binds more tightly than `OR`, so `role:admin OR role:editor isActive:true` is evaluated as `role:admin OR (role:editor AND isActive:true)`.\nGrouping with parentheses is not supported.\n\nFor a single-valued field, comma-separated values and `OR` are equivalent: `role:admin,editor` matches the same records as `role:admin OR role:editor`.\nThey are not interchangeable when the field targets a to-many relation, when negation is applied (`-role:admin,editor` matches neither value, whereas `-role:admin OR -role:editor` matches every record), or when matching `null`.\n\nExplicit date-time values use ISO 8601.\nValues that contain spaces, commas, or `..` must be enclosed in quotation marks.\n`number`, `boolean`, and `null` values do not require quotation marks.\n\n```text\n?filter=firstName:Casey\n?filter=firstName~jo\n?filter=firstName:Casey,Jordan\n?filter=amount:1..10\n?filter=createdAt:30d\n?filter=team.user.email:casey.smith@acme-inc.com\n?filter=-firstName:Casey\n?filter=firstName:Casey isAdmin:true\n?filter=firstName:Casey AND isAdmin:true\n?filter=role:admin OR role:editor\n?filter=createdAt:2021-02-14T13:30:00.000Z\n?filter=description:\"The story called \\\"The Sky and the Sea.\\\"\"\n?search=casey\n```\n\n**Search** uses the `?search=` parameter where the operation supports it.\nIts behavior is defined per endpoint in the API description.\n\n## Errors\n\nError responses commonly use the `application/problem+json` media type.\nFields may include:\n\n- `type`\n- `title`\n- `status`\n- `detail` (optional)\n- `instance` (optional)\n- `object` (always `problem`)\n- `requestId` (optional)\n- `errors` (optional array)\n\nFrequently returned HTTP status codes:\n\n- `400`: validation failure or malformed input\n- `401`: authentication failure\n- `403`: authorization failure\n- `404`: resource not found\n- `409`: conflict with current state\n- `429`: rate limit exceeded\n- `500`: server error\n\nAdditional behavior:\n\n- Certain endpoints may return `402` when access depends on subscription plan or billing state.\n\nTroubleshooting:\n\n- Begin with the HTTP status code.\n- Review the `detail` and `errors` fields.\n\nInclude the following in support requests:\n\n- The complete response payload\n- Sufficient request context to reproduce the issue\n\n## Rate limits\n\nRate limiting preserves service stability and equitable usage.\n\nThe API description defines limits with the `x-rateLimit` extension.\nThese organization quotas apply to requests authenticated with an **API key** that belongs to your organization.\nExample properties:\n\n- `events` - the number of events allowed within the window\n- `window` - the length of the window, for example `1m`\n\nEnforcement:\n\n- For API keys, limits apply **per organization**: all API keys for the same organization share a single counter for a given limit.\n- Unauthenticated traffic to public endpoints does **not** consume these organization counters.\n  It is limited separately (for example by per-client protections at the edge).\n  This mechanism prevents anonymous callers from exhausting an organization's quota.\n- Limits may be defined per endpoint.\n- Limits may be overridden per organization or per endpoint.\n\nWhen a request exceeds the applicable limit, the API returns `429 Too Many Requests` and includes a `Retry-After` header with the number of seconds to wait before the next request.\n\nSend requests for increased throughput to `team@redocly.com` and include:\n\n- Organization ID\n- Affected endpoints\n- Expected request rate\n- Business justification\n","version":"1.0.1","title":"Redocly platform","termsOfService":"https://redocly.com/subscription-agreement","contact":{"name":"API Support","email":"team@redocly.com","url":"https://github.com/Redocly/redocly"},"license":{"name":"Redocly","url":"https://redocly.com/subscription-agreement"}},"servers":[{"url":"https://app.cloud.redocly.com/api","description":"Production main server."},{"url":"https://app.cloud.eu.redocly.com/api","description":"Production EU server."}],"tags":[{"name":"Audit log exports","description":"Export organization audit logs for compliance, analysis, or archival."},{"name":"Credentials","description":"Operations related to credentials."},{"name":"Feedback","description":"Operations related to feedback."},{"name":"Project sources","description":"Operations related to project sources."},{"name":"Pushes","description":"Operations related to pushes."},{"name":"Remotes","description":"Operations related to remotes."}],"paths":{"/orgs/{orgId}/audit-log-export-jobs":{"post":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"createAuditLogExportJob","summary":"Start an audit log export job","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nCreates an asynchronous audit log export job.\nPoll the job status endpoint until `status` is `COMPLETED`, then download from the export results endpoint.","x-rateLimit":{"events":60,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"name":"filter","in":"query","required":false,"description":"Standard list `filter` query. Supported fields for audit exports:\n- `type` — Event type.\n  When omitted, exports include events of all types.\n  Values must be valid audit log event types.\n  Unsupported values return `400`.\n\nFilter fields other than `type` are ignored.","schema":{"type":"string"},"example":"type:com.redocly.apiKey.created"},{"name":"start","in":"query","description":"Start of the time range in YYYY-MM-DD format. When `end` is omitted, exports include events from `start` through `start + 31 days`.","required":false,"example":"2026-01-01","schema":{"type":"string","format":"date"}},{"name":"end","in":"query","description":"End of the time range in YYYY-MM-DD format. When `start` is omitted, exports include events from `end - 31 days` through `end`. The time window between `start` and `end` must not exceed 31 days.","required":false,"example":"2026-01-31","schema":{"type":"string","format":"date"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json"},"description":"Output file format for the generated download.","example":"json"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"201":{"description":"Export job created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogExportJobCreated"},"example":{"id":"exp_01hh1t9sa6gwfv5naz04gr7ehm","createdAt":"2024-01-15T12:00:00.000Z"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/audit-log-export-jobs/{exportJobId}":{"get":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"getAuditLogExportJob","summary":"Retrieve an audit log export job","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nRetrieve the status of an audit log export job.\nPoll this endpoint until `status` is `COMPLETED`, then download the file from the export results endpoint.","x-rateLimit":{"events":300,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ExportJobId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogExportJob"},"example":{"id":"exp_01hh1t9sa6gwfv5naz04gr7ehm","status":"COMPLETED","createdAt":"2024-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/audit-log-export-results/{exportJobId}":{"get":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"getAuditLogExportResult","summary":"Retrieve an audit log export file","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nDownload the file generated by an audit log export job.\nThe file is available only after the export job completes.\nWhile the job status is `IN_PROGRESS` or `FAILED`, this endpoint returns `404`.","x-rateLimit":{"events":60,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ExportJobId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export file. Media type matches the `format` from the create-job request.","headers":{"Content-Disposition":{"description":"Attachment hint for browsers and HTTP clients. Suggested filename: `{exportJobId}.json` or `{exportJobId}.csv`.","schema":{"type":"string"},"example":"attachment; filename=\"exp_01hh1t9sa6gwfv5naz04gr7ehm.json\""}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogExportEvent"}},"example":[{"id":"evt_2fxb8r4kq7m3ndp9z6ja501","object":"event","type":"com.redocly.pullRequest.created","time":"2026-03-31T15:27:30.815Z","subject":"pr_7wnk3jm9xp2d4rv8qh5a01","actor":{"id":"usr_01h2r5f6qy8kr42p8yfw52spq6","object":"user","uri":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"},"clientIp":"198.51.100.42","projectId":"prj_01hh1t9sa6gwfv5naz04gr7ehm","projectSlug":"my-project"}]},"text/csv":{"schema":{"type":"string","format":"binary"},"example":"id,object,type,time,subject,actor,clientIp,projectId,projectSlug\nevt_2fxb8r4kq7m3ndp9z6ja501,event,com.redocly.pullRequest.created,2026-03-31T15:27:30.815Z,pr_7wnk3jm9xp2d4rv8qh5a01,\"{\"\"id\"\":\"\"usr_01h2r5f6qy8kr42p8yfw52spq6\"\",\"\"object\"\":\"\"user\"\",\"\"uri\"\":\"\"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6\"\"}\",198.51.100.42,prj_01hh1t9sa6gwfv5naz04gr7ehm,my-project\n"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/credential-rotations":{"post":{"tags":["Credentials"],"security":[{"ApiKey":[]}],"summary":"Create a credential rotation","description":"Replaces the access token of a shared GitLab, Azure DevOps, or Bitbucket token credential.\nReunite validates the new token with the Git provider before saving it.\nRotating any other credential type returns `400`.\n\nTo find the `credentialId`, list the sources or remotes of the project that uses the credential.\n\nOnly shared credentials can be rotated with an API key. Personal credentials return `404`.\nUse an API key with granular permissions that include `org.credentials.update`, or a legacy full access key.\nAPI keys with RBAC permissions return `403`.\n\nAfter saving the token, Reunite sets up webhooks again for the repositories that use the credential.\nRepositories where the webhook setup fails are listed in `warnings`.\n\nRequires `org.credentials.update` permission.","x-rateLimit":{"events":60,"window":"1m"},"operationId":"createCredentialRotation","parameters":[{"$ref":"#/components/parameters/OrgId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialRotationRequest"}}}},"responses":{"200":{"description":"Credential access token replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialPatchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback":{"get":{"tags":["Feedback"],"summary":"List all feedback","description":"List all feedback.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listFeedback","security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Sort","description":"Feedback list can be sorted by the following properties:\n  - `id`\n  - `createdAt`\n  - `path`\n  - `email`\n  - `score`\n  - `agent`\n  - `targetFeature`\n\nTo sort in descending order, prefix the field with `-` (for example `-createdAt`).\nTo sort in ascending order, use the field name without a prefix (for example `createdAt`).\n\nBy default, feedback list is sorted by `id` in descending order, which corresponds to the newest feedback first."},{"$ref":"#/components/parameters/Filter","description":"Filter feedback by:\n  - `createdAt`\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`\n  - `status` (one of `NEW`, `IN_REVIEW`, `RESOLVED`, `ARCHIVED`, `SPAM`)\n  - `feedbackComponent` (one of `SENTIMENT`, `RATING`, `COMMENT`, `MOOD`, `PROBLEM`, `SCALE`)\n  - `origin` (one of `FORM`, `API`, `MCP`)\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Search","description":"Search feedback by query string.\n\nFeedback is searched by:\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback/{feedbackId}":{"get":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Retrieve a feedback item","description":"Retrieve a feedback item.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":2000,"window":"1m"},"operationId":"getFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"patch":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Partially update a feedback item","description":"Partially update a feedback item.\n\nRequires `project.feedback.update` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"updateFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchFeedbackRequest"}}}},"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"delete":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Delete a feedback item","description":"Delete a feedback item.\n\nRequires `project.feedback.delete` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"deleteFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback-export":{"get":{"tags":["Feedback"],"summary":"Export feedback report","description":"Download a feedback report as CSV or JSON file.\nResponse Content-Type is `text/csv` when `format=csv` and `application/json` when `format=json`.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":10,"window":"1m"},"operationId":"exportFeedbackReport","security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"name":"format","in":"query","required":false,"description":"Export file format. Defaults to `csv`.","schema":{"type":"string","enum":["csv","json"],"default":"csv"},"example":"csv"},{"$ref":"#/components/parameters/After","description":"Cursor from `page.nextPage` in a **List all feedback** response.\nThe export includes only the rows after this cursor."},{"$ref":"#/components/parameters/Before","description":"Cursor from `page.previousPage` in a **List all feedback** response.\nThe export includes only the rows before this cursor."},{"name":"limit","description":"Maximum number of feedback rows to include in the export (from the current sort order).\n\nWhen omitted, the export includes up to 1000 rows.\nRequest a larger export explicitly, up to the maximum.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"example":10000},{"$ref":"#/components/parameters/Sort","description":"Feedback report can be sorted by the following properties:\n  - `id`\n  - `createdAt`\n  - `path`\n  - `email`\n  - `score`\n  - `agent`\n  - `targetFeature`\n\nTo sort in descending order, prefix the field with `-` (for example `-createdAt`).\nTo sort in ascending order, use the field name without a prefix (for example `createdAt`).\n\nBy default, feedback report is sorted by `id` in descending order, which corresponds to the newest feedback first."},{"$ref":"#/components/parameters/Filter","description":"Filter feedback by:\n  - `createdAt`\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`\n  - `status` (one of `NEW`, `IN_REVIEW`, `RESOLVED`, `ARCHIVED`, `SPAM`)\n  - `feedbackComponent` (one of `SENTIMENT`, `RATING`, `COMMENT`, `MOOD`, `PROBLEM`, `SCALE`)\n  - `origin` (one of `FORM`, `API`, `MCP`)\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Search","description":"Search feedback by query string.\n\nFeedback is searched by:\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export file.\nMedia type depends on the `format` query parameter.\n\nThe response is sent as a download: `Content-Disposition` is `attachment` with a generated filename unless the server chooses otherwise.\n\nDefault filename pattern: `feedback_export_{orgId}_{projectId}_{timestamp}.{format}`, where `{timestamp}` is milliseconds since the Unix epoch and `{format}` is either `csv` or `json`.","headers":{"Content-Disposition":{"description":"Attachment hint for browsers and HTTP clients.\nIncludes the suggested filename in the `filename` parameter (quoted).\n\nBy default the filename follows `feedback_export_{orgId}_{projectId}_{timestamp}.{format}`, using the same `orgId` and `projectId` as in the path and a millisecond timestamp.","schema":{"type":"string"},"example":"attachment; filename=\"feedback_export_org_01hh1t9sa6gwfv5naz04gr7ehm_prj_01hh1t9sa6gwfv5naz04gr7ehm_1715432100123.csv\""}},"content":{"text/csv":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/sources":{"get":{"tags":["Project sources"],"security":[{"ApiKey":[]}],"summary":"List all project sources","description":"Lists the source of the project.\nA project has exactly one source, so the list always holds one item.\nThe pagination parameters are accepted for consistency with other list operations.\nA source in an external Git repository includes the `credentialId` of the credential that Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\n\nRequires `org.project.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listProjectSources","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Limit"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSourceList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/sources/{sourceId}":{"get":{"tags":["Project sources"],"security":[{"ApiKey":[]}],"summary":"Retrieve a project source","description":"Retrieves the source of the project.\nA source in an external Git repository includes the `credentialId` of the credential that Reunite uses to access the repository.\n\nRequires `org.project.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"getProjectSourceById","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/SourceId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSource"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/pushes":{"post":{"operationId":"push","summary":"Push files to remote","x-rateLimit":{"events":300,"window":"1m"},"security":[{"ApiKey":[]}],"description":"Push discovered files as a remote content.\nFiles should be sent as a `multipart/form-data`.\nCommit details like commit message and author can be sent as a JSON object in the `commit` field.\nThe complete multipart body must not exceed 500 MiB, including files, fields, and multipart overhead.\n\nRequires `project.remotes.update` permission.\nThe CLI `push` command creates or updates the remote before it pushes files, so it also requires `project.remotes.create`.","tags":["Pushes"],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Push"}}}},"responses":{"201":{"description":"Content pushed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"413":{"description":"Push body exceeds 500 MiB.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"get":{"tags":["Pushes"],"security":[{"ApiKey":[]}],"summary":"List all pushes","description":"List all pushes.\n\nRequires `project.remotes.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listPushes","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Sort","description":"Push list can be sorted by `id` only.\n\nTo sort in descending order, use `-id`.\nTo sort in ascending order, use `id`.\n\nBy default, push list is sorted by `id` in descending order, which corresponds to the newest pushes first."},{"$ref":"#/components/parameters/Filter","description":"Filter pushes by:\n  - `id`\n  - `isMainBranch`\n  - `replace`\n  - `scoutJobId`\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Search","description":"Search pushes by query string.\n\nPushes are searched by:\n  - `id`\n  - `scoutJobId`\n  - `isMainBranch` and `replace`, only when the search term is exactly `true` or `false`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/pushes/{pushId}":{"get":{"security":[{"ApiKey":[]}],"tags":["Pushes"],"operationId":"getPush","summary":"Retrieve a push","description":"Retrieve a push.\n\nRequires `project.remotes.read` permission.","x-rateLimit":{"events":2000,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/PushId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/remotes":{"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"}],"get":{"operationId":"listRemotes","summary":"List all remotes","x-rateLimit":{"events":300,"window":"1m"},"security":[{"ApiKey":[]}],"description":"{% configOptionRequirements plans=[\"Scale\", \"Enterprise\"] /%}\n\nLists the remote content of the project.\nA Git remote includes the `credentialId` of the credential that Reunite uses to access its repository.\nUse it to rotate the access token of the credential.\n\nRequires `project.remotes.read` permission.","tags":["Remotes"],"parameters":[{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Sort","description":"Remote list can be sorted by `id` and `createdAt`.\n\nTo sort in descending order, prefix the field with `-`, for example `-createdAt`.\nTo sort in ascending order, use the field name, for example `createdAt`.\n\nBy default, remote list is sorted by `id` in descending order, which corresponds to the newest remotes first."},{"$ref":"#/components/parameters/Filter","description":"Filter remotes by:\n  - `id`\n  - `mountBranchName`\n  - `type`, one of `GIT`, `URL`, or `CICD`\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Search","description":"Search remotes by query string.\n\nRemotes are searched by:\n  - `id`\n  - `mountPath`\n  - `mountBranchName`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"402":{"$ref":"#/components/responses/PaymentRequiredError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/remotes/{remoteId}":{"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/RemoteId"}],"get":{"security":[{"ApiKey":[]}],"operationId":"getRemote","summary":"Retrieve a remote","x-rateLimit":{"events":2000,"window":"1m"},"description":"{% configOptionRequirements plans=[\"Scale\", \"Enterprise\"] /%}\n\nRetrieves a remote of the project.\nA Git remote includes the `credentialId` of the credential that Reunite uses to access its repository.\n\nRequires `project.remotes.read` permission.","tags":["Remotes"],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Remote"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"402":{"$ref":"#/components/responses/PaymentRequiredError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"parameters":[{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}]}}},"components":{"schemas":{"Problem":{"type":"object","title":"Problem","properties":{"type":{"type":"string","format":"uri-reference","description":"URI reference that uniquely identifies the problem type only in the context of the provided API.\nOpposed to the specification in RFC 9457 (formerly RFC 7807), it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.\n","default":"about:blank","example":"/some/uri-reference"},"title":{"type":"string","description":"Short summary of the problem type.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some title for the error situation"},"status":{"type":"integer","format":"int32","description":"HTTP status code generated by the origin server for this occurrence of the problem.\n","minimum":100,"exclusiveMaximum":600,"example":400},"detail":{"type":"string","description":"Human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some description for the error situation"},"instance":{"type":"string","format":"uri-reference","description":"URI reference that identifies the specific occurrence of the problem. For example, by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code.\n","example":"/some/uri-reference#specific-occurrence-context"},"object":{"type":"string","enum":["problem"]},"requestId":{"type":"string","description":"Unique identifier of the request that produced this problem.\nShare it with support when reporting the error.\n","example":"req-abc-123"},"code":{"type":"string","description":"Machine-readable identifier of the problem, stable across wording changes of `title` and `detail`.\nPresent only for problems a client is expected to branch on; such a problem explains the occurrence in `detail`.\n","example":"usageLimitExceeded"},"reason":{"type":"string","description":"Machine-readable refinement of `code` that names which rule produced the problem.\n","example":"MAX_ACTIVE_RUNS_PER_ORGANIZATION_REACHED"},"errors":{"type":"array","description":"Additional information about the error situation.\nMay be omitted if no additional information is available.\n"}},"required":["type","title","status","object"]},"Page":{"type":"object","properties":{"nextPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the next page, relative to the API server URL.\nAppend the value to the server URL to get the next page.\nThe path keeps the query parameters of the request and sets `after` to the cursor of the next page.\nWhen `null`, there is no next page.","example":"/orgs/org_123/projects?limit=10&after=a25fgaksjf23la=="},"previousPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the previous page, relative to the API server URL.\nAppend the value to the server URL to get the previous page.\nThe path keeps the query parameters of the request and sets `before` to the cursor of the previous page.\nWhen `null`, there is no previous page.","example":"/orgs/org_123/projects?limit=10&before=bfg23aksjf23zb1=="},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Value showing how many items are in the page limit."}},"required":["nextPage","previousPage","limit"]},"AuditLogExportJobCreated":{"type":"object","description":"Details of the created audit log export job.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","createdAt"]},"AuditLogExportStatus":{"type":"string","description":"Current status of the export job.","enum":["IN_PROGRESS","COMPLETED","FAILED"]},"AuditLogExportJob":{"type":"object","description":"Audit log export job status and metadata.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"status":{"$ref":"#/components/schemas/AuditLogExportStatus"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","status","createdAt"]},"AuditLogEventType":{"type":"string","description":"CloudEvent `type` value emitted for an audit-loggable action.\nOnly events whose `type` is in this list are returned by the audit log export endpoints.","enum":["com.redocly.apiKey.created","com.redocly.apiKey.updated","com.redocly.apiKey.revoked","com.redocly.gitIdentity.linked","com.redocly.gitIdentity.unlinked","com.redocly.gitIdentity.removed","com.redocly.scimCredential.created","com.redocly.scimCredential.revoked","com.redocly.invite.created","com.redocly.invite.resent","com.redocly.userInvite.accepted","com.redocly.membership.created","com.redocly.membership.updated","com.redocly.membership.removed","com.redocly.team.created","com.redocly.team.deleted","com.redocly.teamMember.added","com.redocly.teamMember.removed","com.redocly.syncedTeamMember.added","com.redocly.syncedTeamMember.removed","com.redocly.teamManager.added","com.redocly.teamManager.removed","com.redocly.organization.created","com.redocly.organization.updated","com.redocly.organization.slugUpdated","com.redocly.organization.removed","com.redocly.project.created","com.redocly.project.updated","com.redocly.project.slugUpdated","com.redocly.project.urlUpdated","com.redocly.project.removed","com.redocly.projectConfig.updated","com.redocly.projectCustomDomain.verified","com.redocly.projectCustomDomain.removed","com.redocly.branch.created","com.redocly.branch.updated","com.redocly.branch.removed","com.redocly.gitAccess.pushed","com.redocly.remote.created","com.redocly.remote.deleted","com.redocly.gitCredential.rotated","com.redocly.notificationSettings.updated","com.redocly.notifications.disabled","com.redocly.subscription.updated","com.redocly.subscription.churned","com.redocly.subscription.reactivated","com.redocly.subscription.trialEnded","com.redocly.pullRequest.created","com.redocly.pullRequest.closed","com.redocly.pullRequest.reopened","com.redocly.pullRequest.merged","com.redocly.pullRequest.approved","com.redocly.pullRequest.requestedChanges","com.redocly.pullRequest.reviewRequested","com.redocly.pullRequest.readyForReview","com.redocly.pullRequest.markedAsDraft","com.redocly.pullRequest.commented","com.redocly.pullRequest.commitPushed","com.redocly.pullRequest.forcePushed","com.redocly.pullRequest.visualReviewUpdated"],"example":"com.redocly.pullRequest.created"},"id":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"slug":{"description":"Project slug.","type":"string","example":"project_red-owl-352"},"AuditLogExportEvent":{"type":"object","description":"One audit log export record.","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique event identifier.","example":"evt_2fxb8r4kq7m3ndp9z6ja501"},"object":{"type":"string","description":"Entity name.","enum":["event"],"readOnly":true},"type":{"$ref":"#/components/schemas/AuditLogEventType"},"time":{"type":"string","format":"date-time","description":"Event timestamp (ISO 8601).","example":"2026-04-15T14:43:08.172Z"},"subject":{"type":"string","description":"Subject URI or resource ID the event refers to.","example":"pr_7wnk3jm9xp2d4rv8qh5a01"},"projectId":{"$ref":"#/components/schemas/id"},"projectSlug":{"$ref":"#/components/schemas/slug"},"clientIp":{"type":"string","description":"IP address of the client that triggered the event.","example":"198.51.100.42"},"actor":{"oneOf":[{"type":"null"},{"type":"object","description":"Actor that triggered the event.","properties":{"id":{"type":"string","pattern":"^(usr|gid|wh|cj)_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01h2r5f6qy8kr42p8yfw52spq6"},"object":{"type":"string","enum":["user","gitIdentity","webhook","cronJob"],"example":"user"},"uri":{"type":"string","format":"uri","example":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"}},"required":["id","object","uri"],"additionalProperties":false}]}},"additionalProperties":false},"CredentialType":{"type":"string","format":"enum","description":"Credential type.","enum":["GITHUB_USER","GITLAB_USER","BITBUCKET_USER","AZURE_USER","URL","GITHUB_CLOUD_APP_INSTALLATION","GITHUB_SERVER_APP_INSTALLATION","GITHUB_SERVER_APP","GITLAB_SELF_MANAGED_APP","GITHUB_CLOUD_INTERNAL_APP_INSTALLATION","MCP_HEADERS","MCP_BEARER","MCP_API_KEY","SUPPORT_DESK"]},"AuthType":{"type":"string","format":"enum","description":"Credential auth type.","enum":["BASIC","PERSONAL_ACCESS_TOKEN","PERSONAL_ACCESS_TOKEN_FOR_ORGANIZATION","PROJECT_ACCESS_TOKEN","INSTALLATION_ACCESS_TOKEN","OAUTH2","BEARER","API_KEY"]},"GitHubInstallationPublicCredential":{"title":"GitHubInstallationPublicCredential","type":"object","properties":{"installationId":{"type":"number"},"namespaceId":{"type":"string"},"repositoryId":{"type":"string"}},"required":["namespaceId","repositoryId"]},"GitHubEEServerAppPublicCredential":{"title":"GitHubEEServerAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"clientId":{"type":"string"},"url":{"type":"string"},"apiUrl":{"type":"string"},"appName":{"type":"string"}},"required":["appId","clientId","url"]},"GitLabSelfManagedAppPublicCredential":{"title":"GitLabSelfManagedAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"url":{"type":"string"}},"required":["appId","url"]},"AzureDevOpsUserPATPublicCredential":{"title":"AzureDevOpsUserPATPublicCredential","type":"object","properties":{"organizationName":{"type":"string"}},"required":["organizationName"]},"BitbucketCloudUserProjectTokenPublicCredential":{"title":"BitbucketCloudUserProjectTokenPublicCredential","type":"object","properties":{"workspace":{"type":"string","description":"This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example: {workspace UUID}."}},"required":["workspace"]},"McpPublicCredential":{"title":"McpPublicCredential","type":"object","description":"Non-secret part of the credential of an agent MCP server: the header that carries the API key, and the names of the secret headers besides the authentication header. Values live in the secret store.","properties":{"header":{"description":"Request header that carries the API key; absent for a bearer token.","type":"string","example":"X-Api-Key"},"secretHeaderNames":{"description":"Names of the secret headers besides the authentication header.","type":"array","items":{"type":"string"},"example":["X-Tenant"]}},"required":["secretHeaderNames"]},"CredentialSchemaBase":{"title":"CredentialsSchemaBase","type":"object","properties":{"id":{"description":"Credential ID. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["credential"],"readOnly":true},"uri":{"description":"Canonical URI for the credential resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/credentials/cred_01h1s5z6vf2mm1mz3hevnn9va7"},"type":{"$ref":"#/components/schemas/CredentialType"},"authType":{"$ref":"#/components/schemas/AuthType"},"name":{"type":"string"},"description":{"type":"string"},"publicData":{"type":"object","description":"Credential public data.","oneOf":[{"$ref":"#/components/schemas/GitHubInstallationPublicCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppPublicCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppPublicCredential"},{"$ref":"#/components/schemas/AzureDevOpsUserPATPublicCredential"},{"$ref":"#/components/schemas/BitbucketCloudUserProjectTokenPublicCredential"},{"$ref":"#/components/schemas/McpPublicCredential"}]},"oAuth2Data":{"type":"object","description":"Credential OAuth2 data.","readOnly":true,"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"OAuth2 ID. Unique identifier of OAuth2 account.","example":"4acc1f09-1751-6f79-b156-b6877ee205a2"},"userName":{"type":"string","description":"OAuth2 user name.","example":"john-doe"},"displayName":{"type":"string","description":"OAuth2 display name.","example":"John Doe"},"email":{"type":"string","description":"OAuth2 email.","example":"john-doe@mail.com"},"avatarUrl":{"type":"string","description":"OAuth2 avatar URL.","example":"https://avatars.githubusercontent.com/u/1?v=4"}},"required":["id","userName","displayName"]},"userId":{"description":"User ID this credentials belongs to. Unique identifier prefixed with `usr_`.","type":"string","pattern":"^usr_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"isShared":{"type":"boolean","default":false},"isBroken":{"type":"boolean","default":false,"readOnly":true},"parentId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Credential parent ID. Unique identifier prefixed with `cred_`.","example":"cred_01h4e71x94vd68a1farnbfapzg"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","object","uri","type","createdAt","updatedAt"]},"AccessTokenCredential":{"title":"AccessTokenCredential","type":"object","writeOnly":true,"properties":{"accessToken":{"type":"string"}},"required":["accessToken"]},"OAuth2CodeCredential":{"title":"OAuth2CodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"OAuth code to be used to get access/refresh tokens.","type":"string","example":"Yzk5ZDczMzRlNDEwY"}},"required":["code"]},"GithubAppCodeCredential":{"title":"GithubAppCodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"GithubApp code to be used to get exchange code on App secrets.","type":"string","example":"Yzk5ZDczMzRlNDEwY"},"url":{"description":"GithubApp url to be used to get exchange code on App secrets.","type":"string","example":"https://github.app.com"}},"required":["code","url"]},"GitLabSelfManagedAppSecretCredential":{"title":"GitLabSelfManagedAppSecretCredential","type":"object","writeOnly":true,"properties":{"appSecret":{"type":"string"},"webhookSecret":{"type":"string"}},"required":["appSecret"]},"GitHubEEServerAppSecretCredential":{"title":"GitHubEEServerAppSecretCredential","type":"object","writeOnly":true,"properties":{"clientSecret":{"type":"string"},"privateKey":{"type":"string"},"webhookSecret":{"type":"string"}}},"CredentialSchema":{"title":"Credential","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchemaBase"},{"type":"object","properties":{"secretData":{"type":"object","description":"Credential secret data.","writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/AccessTokenCredential"},{"$ref":"#/components/schemas/OAuth2CodeCredential"},{"$ref":"#/components/schemas/GithubAppCodeCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppSecretCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppSecretCredential"}]}}}]},"CredentialPatchResponse":{"title":"CredentialPatchResponse","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchema"},{"type":"object","properties":{"warnings":{"type":"array","description":"Problems that do not block the update.\nFor example, Reunite cannot set up a webhook for a repository that uses this credential.\n","readOnly":true,"items":{"type":"string","example":"Failed to set up webhook for repository \"fe5d7747-af71-449a-951b-f781f54603af\": Azure DevOps token does not have sufficient permissions. Please check token scopes."}}},"required":["warnings"]}]},"CreateCredentialRotationRequest":{"title":"CreateCredentialRotationRequest","type":"object","properties":{"credentialId":{"description":"ID of the credential whose access token is replaced. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7"},"secretData":{"description":"New access token for the credential.","$ref":"#/components/schemas/AccessTokenCredential"}},"required":["credentialId","secretData"]},"Feedback":{"type":"object","title":"Feedback","additionalProperties":false,"properties":{"id":{"description":"Feedback ID. Unique identifier prefixed with `fb_`.","type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"fb_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["feedback"],"readOnly":true},"uri":{"description":"Canonical URI for the feedback resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/feedback/fb_01h1s5z6vf2mm1mz3hevnn9va7"},"email":{"type":["string","null"],"format":"email","maxLength":254,"description":"Email address of user who submitted the feedback or `null`."},"path":{"type":"string","minLength":1,"maxLength":1000,"description":"Absolute URL of the page where feedback is submitted (for example from the browser location). A value that is not a valid URL is accepted, but the feedback is marked as spam.","example":"https://example.com/docs/guide"},"location":{"type":["string","null"],"maxLength":5000,"description":"Identifies the location of the component.\nThis could be a code sample."},"lang":{"type":"string","maxLength":20,"description":"Identifies the language of the component's location.\nThis could be the language of a code sample, such as `js`, `php`, or `txt`."},"feedbackComponent":{"type":"string","description":"Name that identifies UI component.","enum":["SENTIMENT","RATING","COMMENT","MOOD","PROBLEM","SCALE"]},"score":{"description":"Numeric value that maps to the feedback component, such as thumbs down (-1) or thumbs up (1), or a 1-5 star rating scale.","type":["integer","null"],"minimum":-1,"maximum":10},"maxScore":{"description":"Maximum score for the feedback component.","type":["integer","null"],"minimum":0,"maximum":10},"reasons":{"type":"array","description":"List of preset reasons for feedback.","items":{"type":"string","maxLength":5000,"description":"Reason for feedback."}},"comment":{"type":"string","maxLength":5000,"description":"Free-form text feedback."},"agent":{"type":["string","null"],"maxLength":200,"description":"Name of the AI agent that submitted the feedback, or `null` for user-submitted feedback.","example":"Cursor"},"targetFeature":{"type":["string","null"],"maxLength":500,"description":"Documentation feature the feedback refers to (for agent submissions), or `null` for user-submitted feedback.","example":"Respect Monitoring API"},"origin":{"type":"string","description":"Origin of the feedback. `FORM` is the feedback form on the page, `API` is a direct API call (for example an agent that follows `llms.txt` instructions), and `MCP` is the MCP server `submit-feedback` tool. When omitted on create, defaults to `API` if `agent` is set and to `FORM` otherwise.","enum":["FORM","API","MCP"],"example":"MCP"},"metadata":{"type":"object","description":"Extra tracking fields. The server sets `userAgent`, `ipAddress`, `platform`, and `email` (read-only). `id`, `firstName`, `lastName`, and `auth_time` pass through if present but are not verified; do not use for access or identity. Any other key is stored with its value redacted to a placeholder.","properties":{"userAgent":{"type":"string","description":"User agent string of the browser that submitted the feedback. Populated by the server from the `User-Agent` header.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","readOnly":true},"ipAddress":{"type":"string","description":"IP address of the user who submitted the feedback. Populated by the server.","example":"127.0.0.1","readOnly":true},"platform":{"type":"string","description":"Platform from which the feedback originates. Populated by the server from the `Sec-Ch-Ua-Platform` header.","example":"Windows NT 10.0; Win64; x64","readOnly":true},"email":{"type":"string","format":"email","description":"Email address from the user's authentication context. Populated by the server from OIDC claims.","example":"john.doe@acme.com","readOnly":true},"id":{"type":"string","description":"Unverified; whatever the client sent. Not a trusted user ID."},"firstName":{"type":"string","description":"Unverified; client-supplied if present."},"lastName":{"type":"string","description":"Unverified; client-supplied if present."},"auth_time":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Unverified; client-supplied. Not a server-asserted session or token time."}},"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","readOnly":true},"organizationId":{"description":"Organization ID. Unique identifier prefixed with `org_`.","type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"org_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"projectId":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","readOnly":true},"internalCommentUpdatedAt":{"type":"string","format":"date-time","description":"Date and time when the internal comment is updated.","readOnly":true},"internalCommentUpdatedById":{"type":"string","description":"ID of the user who updated the internal comment.","readOnly":true}},"required":["id","uri","path","feedbackComponent","createdAt","object","organizationId","projectId","status","origin"]},"FeedbackList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Feedback"}}},"required":["object","page","data"]},"PatchFeedbackRequest":{"type":"object","title":"Feedback PATCH request","minProperties":1,"properties":{"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","writeOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","writeOnly":true}}},"GitProviderType":{"type":"string","format":"enum","description":"Git provider type.","enum":["GITHUB_CLOUD","GITHUB_SERVER","GITLAB_CLOUD","GITLAB_SELF_MANAGED","BITBUCKET_CLOUD","BITBUCKET_DATACENTER","AZURE_DEVOPS_SERVICES","AZURE_DEVOPS_SERVER"]},"GitProvider":{"type":"object","description":"Git provider configuration.","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/GitProviderType"},"name":{"type":"string","example":"Redocly GitLab"},"publicConfig":{"type":"object","properties":{"url":{"type":"string","example":"https://gitlab.redocly.dev"},"clientId":{"type":"string","example":"05489443ec38b38f2327cdde9d5f51f284ae1d726130b300ecda0a259010c759"},"appName":{"type":"string","example":"redocly"}}},"isCustom":{"type":"boolean","description":"Indicates whether this provider is a custom provider added to the organization."}},"required":["id","type","name","isCustom"]},"ProjectSource":{"type":"object","properties":{"id":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Project source ID. Unique identifier prefixed with `rem_`.","readOnly":true},"uri":{"description":"Canonical URI for the project source resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/sources/rem_01hc2rvwxf7jyj1er504khx8e7"},"branchName":{"description":"Main branch of the project.","type":"string","example":"main"},"contentPath":{"description":"Path to the project content in the repository.","type":"string","example":"/"},"repoName":{"description":"Name of the repository. Present when Reunite can access the repository.","type":"string","example":"Repo Name"},"repoUrl":{"description":"URL of the repository. Present when Reunite can access the repository.","type":"string","example":"https://github.com/example/example"},"isInternal":{"description":"Whether the project content is stored in the Reunite-hosted repository instead of an external Git repository. Internal sources have no Git provider fields and no credential.","type":"boolean","example":true},"isMonorepo":{"description":"Whether the project content is in a folder of the repository rather than at its root.","type":"boolean","example":true},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"providerConfig":{"$ref":"#/components/schemas/GitProvider","description":"Git provider of the repository."},"canAccessRepo":{"type":"boolean","example":true,"description":"Whether Reunite can access the repository with the source credential. `false` usually means that the access token is expired or revoked."},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\nAbsent for internal sources."},"sourceId":{"type":"string","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Use `id` instead.","deprecated":true},"namespaceId":{"type":["string","null"],"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","example":"azure-test-org"},"repositoryId":{"type":"string","description":"Git provider identifier of the repository.","example":"redocly-testing"},"branchDeployStrategy":{"type":"string","description":"Which branches other than the main branch start builds.","enum":["NONE","SELECTED","ALL"]},"selectedDeployBranches":{"type":"array","description":"Branches that start a build when they're updated or a pull request targets them.","items":{"type":"string"}},"prDeploysEnabled":{"type":"boolean","description":"Whether pull requests start builds when they target the main branch or, with the `SELECTED` strategy, a branch in `selectedDeployBranches`.\nHas no effect with the `ALL` strategy, which builds every branch."},"forksPrDeploysEnabled":{"type":"boolean","description":"Whether build starts for PRs from forks."},"visualReviewCheckDisabled":{"type":"boolean","default":false,"description":"Whether the Visual review check is disabled. A disabled check is reported as skipped instead of pending."},"createdAt":{"description":"Time when Reunite created the project source.","type":"string","format":"date-time","readOnly":true},"updatedAt":{"description":"Time of the last change to the project source.","type":"string","format":"date-time","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["projectSource"],"readOnly":true}},"required":["id","uri","branchName","contentPath","isInternal","isMonorepo","branchDeployStrategy","selectedDeployBranches","prDeploysEnabled","forksPrDeploysEnabled","visualReviewCheckDisabled","createdAt","updatedAt","object"]},"ProjectSourceList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/ProjectSource"}}},"required":["object","page","data"]},"MountPath":{"type":"string","description":"Path to the folder in the local repository where remote content is mounted. Paths outside of the project's `contentPath` are not allowed.","example":"apis/test/@v1"},"AutoSync":{"type":"boolean","default":true,"description":"Whether Reunite syncs changes from the remote automatically."},"AutoSyncDisabledAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Time when Reunite turned off auto-sync after repeated failed updates.\n`null` when auto-sync is on or a user turned it off.","example":"2021-08-25T10:00:00.000Z"},"AutoMerge":{"type":"boolean","default":false,"description":"Auto merge changes from remote."},"MountBranchName":{"type":"string","description":"Name of the branch to mount.","example":"main"},"GenericRemoteError":{"oneOf":[{"type":"null"},{"type":"object","properties":{"autoMerge":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the auto merge failure."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the error."},"buildId":{"type":"string","description":"ID of the build that triggered the auto merge."}},"required":["message","timestamp"]}},"required":["autoMerge"]}],"readOnly":true},"LastSyncedAt":{"type":["string","null"],"format":"date-time","description":"Last time remote processed the default branch update.\n`null` when the remote has never been synced.\nFor URL remotes it is updated on interval specified for the remote.","example":"2021-08-25T10:00:00.000Z"},"SyncAttempts":{"type":"integer","description":"Number of failed attempts to sync the remote. If this value exceeds **6**, automatic synchronization is disabled.","example":1},"UrlRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","contentType","url","fileName","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"URL"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"string","enum":["FOLDER","FILE"]},"url":{"description":"URL to the remote content.","type":"string","example":"https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml"},"interval":{"type":"number","description":"Interval in seconds to sync URL remote content.","minimum":900,"default":1800,"example":900},"fileName":{"type":"string","description":"File name of the remote content.","example":"openapi.yaml"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"lastFinishedUrlUpdateId":{"type":["string","null"],"description":"ID of the last finished URL update.","example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"uri":{"type":"string","format":"uri","description":"Canonical URI for the URL remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}},"CicdRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"CICD"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"null","readOnly":true},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"type":"string","format":"uri","description":"Canonical URI for the CICD remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}},"PushProjectBuildStatus":{"type":"object","required":["deploy","scorecard"],"properties":{"deploy":{"type":"object","properties":{"url":{"type":["string","null"],"description":"Deployment URL."},"status":{"type":"string","description":"Status of project deployment.","enum":["pending","running","success","failed","skipped"],"example":"running"}},"required":["status","url"]},"scorecard":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Scorecard name.","example":"Scorecard: Compliance API"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Scorecard status description."},"url":{"type":"string","description":"Scorecard URL."}},"required":["name","status","description","url"]}}}},"Push":{"type":"object","required":["id","remoteIds","commit","uploadedFiles","isOutdated","hasChanges","status"],"properties":{"id":{"description":"Push ID. Unique identifier prefixed with `push_`.","type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"push_01h2captefvs9bpg3v6twqqj9n","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["push"],"readOnly":true},"remoteIds":{"type":"array","items":{"type":"string","description":"Remote IDs. Unique identifier prefixed with `rem_` for pushed remotes.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$"}},"remoteId":{"type":"string","description":"Remote ID. Unique identifier prefixed with `rem_` for pushed remotes. Used only for single remote push.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","deprecated":true},"commit":{"type":"object","required":["message","branchName","author"],"description":"Commit details.","properties":{"message":{"type":"string","description":"Commit message.","example":"chore: Add new API"},"branchName":{"type":"string","description":"Branch name.","example":"main"},"sha":{"type":["string","null"],"description":"SHA of the commit.","example":"f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"url":{"type":["string","null"],"format":"uri","description":"Commit URL.","example":"https://gitlab.com/example-user/example-project/-/commit/f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"createdAt":{"type":["string","null"],"format":"date-time","description":"Commit creation date.","example":"2020-01-01T00:00:00.000Z"},"namespaceId":{"type":["string","null"],"description":"Git namespace ID (organization login for GitHub).","example":"Redocly"},"repositoryId":{"type":["string","null"],"description":"Git repository ID.","example":"redoc"},"author":{"description":"Commit author details.","type":"object","required":["email","name"],"properties":{"name":{"description":"Commit author name.","example":"John Doe"},"email":{"type":"string","description":"Commit author email.","format":"email","example":"johndoe@example.com"},"image":{"type":["string","null"],"description":"Commit author image URL.\nIf not provided, the default image is used.\nIf the image is not accessible, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) can be used."}}},"statuses":{"type":"array","readOnly":true,"description":"List of commit statuses set by the platform to the commit that triggered push.","items":{"type":"object","properties":{"name":{"type":"string","description":"Commit status name.","example":"Scorecard: Compliance API (org-slug/project-slug/remote-mount-path (remote))"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Commit status description."},"url":{"type":["string","null"],"description":"Commit status URL."}},"required":["name","status","description","url"]}}}},"scoutJobId":{"type":["string","null"],"pattern":"^job_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"`PROCESS_GIT_REPO` job, if any. Required for Scout pushes. Unique identifier prefixed with `job_`.","example":"job_01h2captefvs9bpg3v6twqqj9n"},"scoutJobContext":{"type":"string","writeOnly":true,"description":"Context of the `PROCESS_GIT_REPO` job, if any.\nApplies to Scout pushes only.\nUsed as commit status context.","example":"Team A"},"replace":{"type":"boolean","description":"Whether to replace the existing files.\nIf provided, all files from the remote are removed and the new files are added.\nIf not provided, the existing files are kept and the new files are added, overwriting the existing files where they overlap.","example":true,"default":false},"files":{"type":"object","writeOnly":true,"description":"Map of files to upload.","additionalProperties":{"description":"Files to push.","type":"string","format":"binary"}},"uploadedFiles":{"type":"array","readOnly":true,"description":"List of pushed files.","items":{"type":"object","description":"Pushed file.","required":["path","mimeType"],"properties":{"path":{"type":"string","description":"File path.","example":"some-path/index.html"},"mimeType":{"type":"string","description":"File MIME type.","example":"text/html"}}}},"isMainBranch":{"type":"boolean","example":true,"description":"Is push provided to the main branch."},"isOutdated":{"type":"boolean","readOnly":true,"description":"Indicates whether the push is discarded.\nIn case several pushes are performed in a row, the one with most recent commit is applied only.\nAlways `false` when commit's `createdAt` is omitted.","example":false},"hasChanges":{"type":"boolean","readOnly":true,"description":"Indicates if pushed files have changes.","example":false},"status":{"type":"object","readOnly":true,"description":"Status of the corresponding preview and production builds.","required":["preview","production"],"properties":{"preview":{"$ref":"#/components/schemas/PushProjectBuildStatus"},"production":{"$ref":"#/components/schemas/PushProjectBuildStatus"}}}}},"PushList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Push"}}},"required":["object","page","data"]},"GitRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","repositoryId","branchName","contentPath","contentType","providerType","credentialId","uri","object"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"GIT"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Time when a user last created or updated the remote.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"ID of the user who created the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"ID of the user who last created or updated the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"namespaceId":{"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","type":["string","null"]},"repositoryId":{"description":"Git provider identifier of the repository.","type":"string"},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"description":"Path to the connected folder in the remote repository.","type":"string"},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential."},"branchName":{"description":"Branch name in the remote repository.","type":"string","example":"dev"},"contentType":{"type":"string","enum":["FOLDER","FILE"],"example":"FILE"},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"description":"Canonical URI for the remote resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"},"lastFinishedGitUpdateId":{"type":["string","null"],"description":"ID of the last finished Git update.","readOnly":true,"example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh"},"errors":{"$ref":"#/components/schemas/GenericRemoteError"}}},"Remote":{"oneOf":[{"$ref":"#/components/schemas/GitRemote"},{"$ref":"#/components/schemas/UrlRemote"},{"$ref":"#/components/schemas/CicdRemote"}],"discriminator":{"propertyName":"type","mapping":{"GIT":"#/components/schemas/GitRemote","URL":"#/components/schemas/UrlRemote","CICD":"#/components/schemas/CicdRemote"}}},"RemoteList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Remote"}}},"required":["object","page","data"]}},"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","description":"API key is required to access API.\nCreate an API key by visiting [Platform](https://app.cloud.redocly.com/) and navigating to **Access** > **API Keys** page."}},"responses":{"BadRequestError":{"description":"Bad Request.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"InternalServerError":{"description":"Internal Server Error.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"UnauthorizedError":{"description":"User is not authorized to access this resource.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"ForbiddenError":{"description":"Forbidden.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NotFoundError":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NoContent":{"description":"No Content."},"TooManyRequestsError":{"description":"Too Many Requests.\n\nThe organization exceeded the rate limit for this operation.\nThe `Retry-After` header gives the number of seconds to wait before the next request.","headers":{"Retry-After":{"description":"Number of seconds to wait before sending another request.","schema":{"type":"integer","minimum":1},"example":30}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PaymentRequiredError":{"description":"Payment Required.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"parameters":{"OrgId":{"name":"orgId","description":"Organization ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `org_`."},"example":"org_01h1s5z6vf2mm1mz3hevnn9va7"},"After":{"name":"after","in":"query","required":false,"description":"Cursor of the next page.\n`page.nextPage` contains it as the `after` query parameter, so you can also request `page.nextPage` directly.\nThe cursor is opaque, and its internal structure is subject to change.","schema":{"type":"string"},"example":"a25fgaksjf23la=="},"Before":{"name":"before","in":"query","required":false,"description":"Cursor of the previous page.\n`page.previousPage` contains it as the `before` query parameter, so you can also request `page.previousPage` directly.\nThe cursor is opaque, and its internal structure is subject to change.","schema":{"type":"string"},"example":"bfg23aksjf23zb1=="},"Limit":{"name":"limit","description":"Use to return a number of results per page.\nIf there is more data, use in combination with `after` to page through the data.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":10},"Filter":{"name":"filter","description":"Filters the collection items. This field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results).","in":"query","required":false,"schema":{"type":"string"},"example":"status:approved createdAt:30d"},"Sort":{"name":"sort","description":"To sort by ID in descending order use `-id`.\nTo sort by ID in ascending order use `id`.","in":"query","required":false,"schema":{"type":"string","default":"-id"},"example":"-id"},"Search":{"name":"search","in":"query","description":"Search.","required":false,"schema":{"type":"string"},"example":"text-to-search"},"ProjectId":{"name":"projectId","description":"Project ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `prj_`."},"example":"prj_01hh1t9sa6gwfv5naz04gr7ehm"},"ExportJobId":{"name":"exportJobId","description":"Export Job ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `exp_`."},"example":"exp_01h1s5z6vf2mm1mz3hevnn9va7"},"FeedbackId":{"name":"feedbackId","description":"Feedback ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `fb_`."},"example":"fb_01h1s5z6vf2mm1mz3hevnn9va7"},"SourceId":{"name":"sourceId","description":"Project source ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `rem_`."},"example":"rem_01h1s5z6vf2mm1mz3hevnn9va7"},"PushId":{"name":"pushId","description":"Push ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `push_`."},"example":"push_01hhh91dhc2kg9naf476y7qmas"},"RemoteId":{"name":"remoteId","description":"Remote ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `rem_`."},"example":"rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"operationId":"createAuditLogExportJob","operationSource":{"kind":"code-sample","operationType":"http","method":"POST","path":"/orgs/{orgId}/audit-log-export-jobs","servers":[{"url":"/_mock/docs/platform/customization/reunite-api/openapi","description":"Mock server","isMockServer":true},{"url":"https://app.cloud.redocly.com/api","description":"Production main server."},{"url":"https://app.cloud.eu.redocly.com/api","description":"Production EU server."}],"parameters":{"path":[{"name":"orgId","in":"path","required":true,"example":"org_01h1s5z6vf2mm1mz3hevnn9va7","schemaId":"schema_0"}],"query":[{"name":"filter","in":"query","required":false,"example":"type:com.redocly.apiKey.created","schemaId":"schema_1"},{"name":"start","in":"query","required":false,"example":"2026-01-01","schemaId":"schema_2"},{"name":"end","in":"query","required":false,"example":"2026-01-31","schemaId":"schema_2"},{"name":"format","in":"query","required":false,"example":"json","schemaId":"schema_3"}],"querystring":[],"header":[{"name":"x-redocly-client","in":"header","required":false,"example":"reunite-ui/0.92.1","schemaId":"schema_4"}],"cookie":[]},"security":[{"schemes":[{"id":"ApiKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["201","400","401","403","404","429","500"],"pointer":"/orgs/{orgId}/audit-log-export-jobs","openApiOperationId":"createAuditLogExportJob","summary":"Start an audit log export job"},"options":{"excludeFromSearch":true,"mockServer":{"url":"/_mock/docs/platform/customization/reunite-api/openapi","position":"first","description":"Mock server"}},"pointer":"/paths/~1orgs~1{orgId}~1audit-log-export-jobs/post"}},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"check-the-job-status","__idx":5},"children":["Check the job status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The export runs in the background."]},{"$$mdtype":"Tag","name":"NumberedList","attributes":{"type":"number","size":"small"},"children":[{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":1,"isLast":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send the job ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," you received ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#start-an-export-job"},"children":["after starting the export job"]}," to check whether the file is ready."]},{"$$mdtype":"Tag","name":"ReplayOpenApi","attributes":{"descriptionFile":"../customization/reunite-api/openapi.yaml","operationId":"getAuditLogExportJob","parameters":{},"options":{},"environments":{},"replayResolved":{"apiStore":{"schemaStore":{"components/schemas/Problem":{"id":"components/schemas/Problem","kind":"json-schema","title":"Problem","data":{"type":"object","title":"Problem","properties":{"type":{"type":"string","format":"uri-reference","description":"URI reference that uniquely identifies the problem type only in the context of the provided API.\nOpposed to the specification in RFC 9457 (formerly RFC 7807), it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.\n","default":"about:blank","example":"/some/uri-reference"},"title":{"type":"string","description":"Short summary of the problem type.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some title for the error situation"},"status":{"type":"integer","format":"int32","description":"HTTP status code generated by the origin server for this occurrence of the problem.\n","minimum":100,"exclusiveMaximum":600,"example":400},"detail":{"type":"string","description":"Human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some description for the error situation"},"instance":{"type":"string","format":"uri-reference","description":"URI reference that identifies the specific occurrence of the problem. For example, by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code.\n","example":"/some/uri-reference#specific-occurrence-context"},"object":{"type":"string","enum":["problem"]},"requestId":{"type":"string","description":"Unique identifier of the request that produced this problem.\nShare it with support when reporting the error.\n","example":"req-abc-123"},"code":{"type":"string","description":"Machine-readable identifier of the problem, stable across wording changes of `title` and `detail`.\nPresent only for problems a client is expected to branch on; such a problem explains the occurrence in `detail`.\n","example":"usageLimitExceeded"},"reason":{"type":"string","description":"Machine-readable refinement of `code` that names which rule produced the problem.\n","example":"MAX_ACTIVE_RUNS_PER_ORGANIZATION_REACHED"},"errors":{"type":"array","description":"Additional information about the error situation.\nMay be omitted if no additional information is available.\n"}},"required":["type","title","status","object"]}},"components/schemas/Page":{"id":"components/schemas/Page","kind":"json-schema","title":"Page","data":{"type":"object","properties":{"nextPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the next page, relative to the API server URL.\nAppend the value to the server URL to get the next page.\nThe path keeps the query parameters of the request and sets `after` to the cursor of the next page.\nWhen `null`, there is no next page.","example":"/orgs/org_123/projects?limit=10&after=a25fgaksjf23la=="},"previousPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the previous page, relative to the API server URL.\nAppend the value to the server URL to get the previous page.\nThe path keeps the query parameters of the request and sets `before` to the cursor of the previous page.\nWhen `null`, there is no previous page.","example":"/orgs/org_123/projects?limit=10&before=bfg23aksjf23zb1=="},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Value showing how many items are in the page limit."}},"required":["nextPage","previousPage","limit"]}},"components/schemas/AuditLogExportJobCreated":{"id":"components/schemas/AuditLogExportJobCreated","kind":"json-schema","title":"AuditLogExportJobCreated","data":{"type":"object","description":"Details of the created audit log export job.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","createdAt"]}},"components/schemas/AuditLogExportStatus":{"id":"components/schemas/AuditLogExportStatus","kind":"json-schema","title":"AuditLogExportStatus","data":{"type":"string","description":"Current status of the export job.","enum":["IN_PROGRESS","COMPLETED","FAILED"]}},"components/schemas/AuditLogExportJob":{"id":"components/schemas/AuditLogExportJob","kind":"json-schema","title":"AuditLogExportJob","data":{"type":"object","description":"Audit log export job status and metadata.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"status":{"$ref":"#/components/schemas/AuditLogExportStatus"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","status","createdAt"]}},"components/schemas/AuditLogEventType":{"id":"components/schemas/AuditLogEventType","kind":"json-schema","title":"AuditLogEventType","data":{"type":"string","description":"CloudEvent `type` value emitted for an audit-loggable action.\nOnly events whose `type` is in this list are returned by the audit log export endpoints.","enum":["com.redocly.apiKey.created","com.redocly.apiKey.updated","com.redocly.apiKey.revoked","com.redocly.gitIdentity.linked","com.redocly.gitIdentity.unlinked","com.redocly.gitIdentity.removed","com.redocly.scimCredential.created","com.redocly.scimCredential.revoked","com.redocly.invite.created","com.redocly.invite.resent","com.redocly.userInvite.accepted","com.redocly.membership.created","com.redocly.membership.updated","com.redocly.membership.removed","com.redocly.team.created","com.redocly.team.deleted","com.redocly.teamMember.added","com.redocly.teamMember.removed","com.redocly.syncedTeamMember.added","com.redocly.syncedTeamMember.removed","com.redocly.teamManager.added","com.redocly.teamManager.removed","com.redocly.organization.created","com.redocly.organization.updated","com.redocly.organization.slugUpdated","com.redocly.organization.removed","com.redocly.project.created","com.redocly.project.updated","com.redocly.project.slugUpdated","com.redocly.project.urlUpdated","com.redocly.project.removed","com.redocly.projectConfig.updated","com.redocly.projectCustomDomain.verified","com.redocly.projectCustomDomain.removed","com.redocly.branch.created","com.redocly.branch.updated","com.redocly.branch.removed","com.redocly.gitAccess.pushed","com.redocly.remote.created","com.redocly.remote.deleted","com.redocly.gitCredential.rotated","com.redocly.notificationSettings.updated","com.redocly.notifications.disabled","com.redocly.subscription.updated","com.redocly.subscription.churned","com.redocly.subscription.reactivated","com.redocly.subscription.trialEnded","com.redocly.pullRequest.created","com.redocly.pullRequest.closed","com.redocly.pullRequest.reopened","com.redocly.pullRequest.merged","com.redocly.pullRequest.approved","com.redocly.pullRequest.requestedChanges","com.redocly.pullRequest.reviewRequested","com.redocly.pullRequest.readyForReview","com.redocly.pullRequest.markedAsDraft","com.redocly.pullRequest.commented","com.redocly.pullRequest.commitPushed","com.redocly.pullRequest.forcePushed","com.redocly.pullRequest.visualReviewUpdated"],"example":"com.redocly.pullRequest.created"}},"components/schemas/id":{"id":"components/schemas/id","kind":"json-schema","title":"id","data":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true}},"components/schemas/slug":{"id":"components/schemas/slug","kind":"json-schema","title":"slug","data":{"description":"Project slug.","type":"string","example":"project_red-owl-352"}},"components/schemas/AuditLogExportEvent":{"id":"components/schemas/AuditLogExportEvent","kind":"json-schema","title":"AuditLogExportEvent","data":{"type":"object","description":"One audit log export record.","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique event identifier.","example":"evt_2fxb8r4kq7m3ndp9z6ja501"},"object":{"type":"string","description":"Entity name.","enum":["event"],"readOnly":true},"type":{"$ref":"#/components/schemas/AuditLogEventType"},"time":{"type":"string","format":"date-time","description":"Event timestamp (ISO 8601).","example":"2026-04-15T14:43:08.172Z"},"subject":{"type":"string","description":"Subject URI or resource ID the event refers to.","example":"pr_7wnk3jm9xp2d4rv8qh5a01"},"projectId":{"$ref":"#/components/schemas/id"},"projectSlug":{"$ref":"#/components/schemas/slug"},"clientIp":{"type":"string","description":"IP address of the client that triggered the event.","example":"198.51.100.42"},"actor":{"oneOf":[{"type":"null"},{"type":"object","description":"Actor that triggered the event.","properties":{"id":{"type":"string","pattern":"^(usr|gid|wh|cj)_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01h2r5f6qy8kr42p8yfw52spq6"},"object":{"type":"string","enum":["user","gitIdentity","webhook","cronJob"],"example":"user"},"uri":{"type":"string","format":"uri","example":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"}},"required":["id","object","uri"],"additionalProperties":false}]}},"additionalProperties":false}},"components/schemas/CredentialType":{"id":"components/schemas/CredentialType","kind":"json-schema","title":"CredentialType","data":{"type":"string","format":"enum","description":"Credential type.","enum":["GITHUB_USER","GITLAB_USER","BITBUCKET_USER","AZURE_USER","URL","GITHUB_CLOUD_APP_INSTALLATION","GITHUB_SERVER_APP_INSTALLATION","GITHUB_SERVER_APP","GITLAB_SELF_MANAGED_APP","GITHUB_CLOUD_INTERNAL_APP_INSTALLATION","MCP_HEADERS","MCP_BEARER","MCP_API_KEY","SUPPORT_DESK"]}},"components/schemas/AuthType":{"id":"components/schemas/AuthType","kind":"json-schema","title":"AuthType","data":{"type":"string","format":"enum","description":"Credential auth type.","enum":["BASIC","PERSONAL_ACCESS_TOKEN","PERSONAL_ACCESS_TOKEN_FOR_ORGANIZATION","PROJECT_ACCESS_TOKEN","INSTALLATION_ACCESS_TOKEN","OAUTH2","BEARER","API_KEY"]}},"components/schemas/GitHubInstallationPublicCredential":{"id":"components/schemas/GitHubInstallationPublicCredential","kind":"json-schema","title":"GitHubInstallationPublicCredential","data":{"title":"GitHubInstallationPublicCredential","type":"object","properties":{"installationId":{"type":"number"},"namespaceId":{"type":"string"},"repositoryId":{"type":"string"}},"required":["namespaceId","repositoryId"]}},"components/schemas/GitHubEEServerAppPublicCredential":{"id":"components/schemas/GitHubEEServerAppPublicCredential","kind":"json-schema","title":"GitHubEEServerAppPublicCredential","data":{"title":"GitHubEEServerAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"clientId":{"type":"string"},"url":{"type":"string"},"apiUrl":{"type":"string"},"appName":{"type":"string"}},"required":["appId","clientId","url"]}},"components/schemas/GitLabSelfManagedAppPublicCredential":{"id":"components/schemas/GitLabSelfManagedAppPublicCredential","kind":"json-schema","title":"GitLabSelfManagedAppPublicCredential","data":{"title":"GitLabSelfManagedAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"url":{"type":"string"}},"required":["appId","url"]}},"components/schemas/AzureDevOpsUserPATPublicCredential":{"id":"components/schemas/AzureDevOpsUserPATPublicCredential","kind":"json-schema","title":"AzureDevOpsUserPATPublicCredential","data":{"title":"AzureDevOpsUserPATPublicCredential","type":"object","properties":{"organizationName":{"type":"string"}},"required":["organizationName"]}},"components/schemas/BitbucketCloudUserProjectTokenPublicCredential":{"id":"components/schemas/BitbucketCloudUserProjectTokenPublicCredential","kind":"json-schema","title":"BitbucketCloudUserProjectTokenPublicCredential","data":{"title":"BitbucketCloudUserProjectTokenPublicCredential","type":"object","properties":{"workspace":{"type":"string","description":"This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example: {workspace UUID}."}},"required":["workspace"]}},"components/schemas/McpPublicCredential":{"id":"components/schemas/McpPublicCredential","kind":"json-schema","title":"McpPublicCredential","data":{"title":"McpPublicCredential","type":"object","description":"Non-secret part of the credential of an agent MCP server: the header that carries the API key, and the names of the secret headers besides the authentication header. Values live in the secret store.","properties":{"header":{"description":"Request header that carries the API key; absent for a bearer token.","type":"string","example":"X-Api-Key"},"secretHeaderNames":{"description":"Names of the secret headers besides the authentication header.","type":"array","items":{"type":"string"},"example":["X-Tenant"]}},"required":["secretHeaderNames"]}},"components/schemas/CredentialSchemaBase":{"id":"components/schemas/CredentialSchemaBase","kind":"json-schema","title":"CredentialsSchemaBase","data":{"title":"CredentialsSchemaBase","type":"object","properties":{"id":{"description":"Credential ID. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["credential"],"readOnly":true},"uri":{"description":"Canonical URI for the credential resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/credentials/cred_01h1s5z6vf2mm1mz3hevnn9va7"},"type":{"$ref":"#/components/schemas/CredentialType"},"authType":{"$ref":"#/components/schemas/AuthType"},"name":{"type":"string"},"description":{"type":"string"},"publicData":{"type":"object","description":"Credential public data.","oneOf":[{"$ref":"#/components/schemas/GitHubInstallationPublicCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppPublicCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppPublicCredential"},{"$ref":"#/components/schemas/AzureDevOpsUserPATPublicCredential"},{"$ref":"#/components/schemas/BitbucketCloudUserProjectTokenPublicCredential"},{"$ref":"#/components/schemas/McpPublicCredential"}]},"oAuth2Data":{"type":"object","description":"Credential OAuth2 data.","readOnly":true,"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"OAuth2 ID. Unique identifier of OAuth2 account.","example":"4acc1f09-1751-6f79-b156-b6877ee205a2"},"userName":{"type":"string","description":"OAuth2 user name.","example":"john-doe"},"displayName":{"type":"string","description":"OAuth2 display name.","example":"John Doe"},"email":{"type":"string","description":"OAuth2 email.","example":"john-doe@mail.com"},"avatarUrl":{"type":"string","description":"OAuth2 avatar URL.","example":"https://avatars.githubusercontent.com/u/1?v=4"}},"required":["id","userName","displayName"]},"userId":{"description":"User ID this credentials belongs to. Unique identifier prefixed with `usr_`.","type":"string","pattern":"^usr_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"isShared":{"type":"boolean","default":false},"isBroken":{"type":"boolean","default":false,"readOnly":true},"parentId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Credential parent ID. Unique identifier prefixed with `cred_`.","example":"cred_01h4e71x94vd68a1farnbfapzg"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","object","uri","type","createdAt","updatedAt"]}},"components/schemas/AccessTokenCredential":{"id":"components/schemas/AccessTokenCredential","kind":"json-schema","title":"AccessTokenCredential","data":{"title":"AccessTokenCredential","type":"object","writeOnly":true,"properties":{"accessToken":{"type":"string"}},"required":["accessToken"]}},"components/schemas/OAuth2CodeCredential":{"id":"components/schemas/OAuth2CodeCredential","kind":"json-schema","title":"OAuth2CodeCredential","data":{"title":"OAuth2CodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"OAuth code to be used to get access/refresh tokens.","type":"string","example":"Yzk5ZDczMzRlNDEwY"}},"required":["code"]}},"components/schemas/GithubAppCodeCredential":{"id":"components/schemas/GithubAppCodeCredential","kind":"json-schema","title":"GithubAppCodeCredential","data":{"title":"GithubAppCodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"GithubApp code to be used to get exchange code on App secrets.","type":"string","example":"Yzk5ZDczMzRlNDEwY"},"url":{"description":"GithubApp url to be used to get exchange code on App secrets.","type":"string","example":"https://github.app.com"}},"required":["code","url"]}},"components/schemas/GitLabSelfManagedAppSecretCredential":{"id":"components/schemas/GitLabSelfManagedAppSecretCredential","kind":"json-schema","title":"GitLabSelfManagedAppSecretCredential","data":{"title":"GitLabSelfManagedAppSecretCredential","type":"object","writeOnly":true,"properties":{"appSecret":{"type":"string"},"webhookSecret":{"type":"string"}},"required":["appSecret"]}},"components/schemas/GitHubEEServerAppSecretCredential":{"id":"components/schemas/GitHubEEServerAppSecretCredential","kind":"json-schema","title":"GitHubEEServerAppSecretCredential","data":{"title":"GitHubEEServerAppSecretCredential","type":"object","writeOnly":true,"properties":{"clientSecret":{"type":"string"},"privateKey":{"type":"string"},"webhookSecret":{"type":"string"}}}},"components/schemas/CredentialSchema":{"id":"components/schemas/CredentialSchema","kind":"json-schema","title":"Credential","data":{"title":"Credential","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchemaBase"},{"type":"object","properties":{"secretData":{"type":"object","description":"Credential secret data.","writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/AccessTokenCredential"},{"$ref":"#/components/schemas/OAuth2CodeCredential"},{"$ref":"#/components/schemas/GithubAppCodeCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppSecretCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppSecretCredential"}]}}}]}},"components/schemas/CredentialPatchResponse":{"id":"components/schemas/CredentialPatchResponse","kind":"json-schema","title":"CredentialPatchResponse","data":{"title":"CredentialPatchResponse","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchema"},{"type":"object","properties":{"warnings":{"type":"array","description":"Problems that do not block the update.\nFor example, Reunite cannot set up a webhook for a repository that uses this credential.\n","readOnly":true,"items":{"type":"string","example":"Failed to set up webhook for repository \"fe5d7747-af71-449a-951b-f781f54603af\": Azure DevOps token does not have sufficient permissions. Please check token scopes."}}},"required":["warnings"]}]}},"components/schemas/CreateCredentialRotationRequest":{"id":"components/schemas/CreateCredentialRotationRequest","kind":"json-schema","title":"CreateCredentialRotationRequest","data":{"title":"CreateCredentialRotationRequest","type":"object","properties":{"credentialId":{"description":"ID of the credential whose access token is replaced. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7"},"secretData":{"description":"New access token for the credential.","$ref":"#/components/schemas/AccessTokenCredential"}},"required":["credentialId","secretData"]}},"components/schemas/Feedback":{"id":"components/schemas/Feedback","kind":"json-schema","title":"Feedback","data":{"type":"object","title":"Feedback","additionalProperties":false,"properties":{"id":{"description":"Feedback ID. Unique identifier prefixed with `fb_`.","type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"fb_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["feedback"],"readOnly":true},"uri":{"description":"Canonical URI for the feedback resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/feedback/fb_01h1s5z6vf2mm1mz3hevnn9va7"},"email":{"type":["string","null"],"format":"email","maxLength":254,"description":"Email address of user who submitted the feedback or `null`."},"path":{"type":"string","minLength":1,"maxLength":1000,"description":"Absolute URL of the page where feedback is submitted (for example from the browser location). A value that is not a valid URL is accepted, but the feedback is marked as spam.","example":"https://example.com/docs/guide"},"location":{"type":["string","null"],"maxLength":5000,"description":"Identifies the location of the component.\nThis could be a code sample."},"lang":{"type":"string","maxLength":20,"description":"Identifies the language of the component's location.\nThis could be the language of a code sample, such as `js`, `php`, or `txt`."},"feedbackComponent":{"type":"string","description":"Name that identifies UI component.","enum":["SENTIMENT","RATING","COMMENT","MOOD","PROBLEM","SCALE"]},"score":{"description":"Numeric value that maps to the feedback component, such as thumbs down (-1) or thumbs up (1), or a 1-5 star rating scale.","type":["integer","null"],"minimum":-1,"maximum":10},"maxScore":{"description":"Maximum score for the feedback component.","type":["integer","null"],"minimum":0,"maximum":10},"reasons":{"type":"array","description":"List of preset reasons for feedback.","items":{"type":"string","maxLength":5000,"description":"Reason for feedback."}},"comment":{"type":"string","maxLength":5000,"description":"Free-form text feedback."},"agent":{"type":["string","null"],"maxLength":200,"description":"Name of the AI agent that submitted the feedback, or `null` for user-submitted feedback.","example":"Cursor"},"targetFeature":{"type":["string","null"],"maxLength":500,"description":"Documentation feature the feedback refers to (for agent submissions), or `null` for user-submitted feedback.","example":"Respect Monitoring API"},"origin":{"type":"string","description":"Origin of the feedback. `FORM` is the feedback form on the page, `API` is a direct API call (for example an agent that follows `llms.txt` instructions), and `MCP` is the MCP server `submit-feedback` tool. When omitted on create, defaults to `API` if `agent` is set and to `FORM` otherwise.","enum":["FORM","API","MCP"],"example":"MCP"},"metadata":{"type":"object","description":"Extra tracking fields. The server sets `userAgent`, `ipAddress`, `platform`, and `email` (read-only). `id`, `firstName`, `lastName`, and `auth_time` pass through if present but are not verified; do not use for access or identity. Any other key is stored with its value redacted to a placeholder.","properties":{"userAgent":{"type":"string","description":"User agent string of the browser that submitted the feedback. Populated by the server from the `User-Agent` header.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","readOnly":true},"ipAddress":{"type":"string","description":"IP address of the user who submitted the feedback. Populated by the server.","example":"127.0.0.1","readOnly":true},"platform":{"type":"string","description":"Platform from which the feedback originates. Populated by the server from the `Sec-Ch-Ua-Platform` header.","example":"Windows NT 10.0; Win64; x64","readOnly":true},"email":{"type":"string","format":"email","description":"Email address from the user's authentication context. Populated by the server from OIDC claims.","example":"john.doe@acme.com","readOnly":true},"id":{"type":"string","description":"Unverified; whatever the client sent. Not a trusted user ID."},"firstName":{"type":"string","description":"Unverified; client-supplied if present."},"lastName":{"type":"string","description":"Unverified; client-supplied if present."},"auth_time":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Unverified; client-supplied. Not a server-asserted session or token time."}},"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","readOnly":true},"organizationId":{"description":"Organization ID. Unique identifier prefixed with `org_`.","type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"org_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"projectId":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","readOnly":true},"internalCommentUpdatedAt":{"type":"string","format":"date-time","description":"Date and time when the internal comment is updated.","readOnly":true},"internalCommentUpdatedById":{"type":"string","description":"ID of the user who updated the internal comment.","readOnly":true}},"required":["id","uri","path","feedbackComponent","createdAt","object","organizationId","projectId","status","origin"]}},"components/schemas/FeedbackList":{"id":"components/schemas/FeedbackList","kind":"json-schema","title":"FeedbackList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Feedback"}}},"required":["object","page","data"]}},"components/schemas/PatchFeedbackRequest":{"id":"components/schemas/PatchFeedbackRequest","kind":"json-schema","title":"Feedback PATCH request","data":{"type":"object","title":"Feedback PATCH request","minProperties":1,"properties":{"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","writeOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","writeOnly":true}}}},"components/schemas/GitProviderType":{"id":"components/schemas/GitProviderType","kind":"json-schema","title":"GitProviderType","data":{"type":"string","format":"enum","description":"Git provider type.","enum":["GITHUB_CLOUD","GITHUB_SERVER","GITLAB_CLOUD","GITLAB_SELF_MANAGED","BITBUCKET_CLOUD","BITBUCKET_DATACENTER","AZURE_DEVOPS_SERVICES","AZURE_DEVOPS_SERVER"]}},"components/schemas/GitProvider":{"id":"components/schemas/GitProvider","kind":"json-schema","title":"GitProvider","data":{"type":"object","description":"Git provider configuration.","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/GitProviderType"},"name":{"type":"string","example":"Redocly GitLab"},"publicConfig":{"type":"object","properties":{"url":{"type":"string","example":"https://gitlab.redocly.dev"},"clientId":{"type":"string","example":"05489443ec38b38f2327cdde9d5f51f284ae1d726130b300ecda0a259010c759"},"appName":{"type":"string","example":"redocly"}}},"isCustom":{"type":"boolean","description":"Indicates whether this provider is a custom provider added to the organization."}},"required":["id","type","name","isCustom"]}},"components/schemas/ProjectSource":{"id":"components/schemas/ProjectSource","kind":"json-schema","title":"ProjectSource","data":{"type":"object","properties":{"id":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Project source ID. Unique identifier prefixed with `rem_`.","readOnly":true},"uri":{"description":"Canonical URI for the project source resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/sources/rem_01hc2rvwxf7jyj1er504khx8e7"},"branchName":{"description":"Main branch of the project.","type":"string","example":"main"},"contentPath":{"description":"Path to the project content in the repository.","type":"string","example":"/"},"repoName":{"description":"Name of the repository. Present when Reunite can access the repository.","type":"string","example":"Repo Name"},"repoUrl":{"description":"URL of the repository. Present when Reunite can access the repository.","type":"string","example":"https://github.com/example/example"},"isInternal":{"description":"Whether the project content is stored in the Reunite-hosted repository instead of an external Git repository. Internal sources have no Git provider fields and no credential.","type":"boolean","example":true},"isMonorepo":{"description":"Whether the project content is in a folder of the repository rather than at its root.","type":"boolean","example":true},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"providerConfig":{"$ref":"#/components/schemas/GitProvider","description":"Git provider of the repository."},"canAccessRepo":{"type":"boolean","example":true,"description":"Whether Reunite can access the repository with the source credential. `false` usually means that the access token is expired or revoked."},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\nAbsent for internal sources."},"sourceId":{"type":"string","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Use `id` instead.","deprecated":true},"namespaceId":{"type":["string","null"],"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","example":"azure-test-org"},"repositoryId":{"type":"string","description":"Git provider identifier of the repository.","example":"redocly-testing"},"branchDeployStrategy":{"type":"string","description":"Which branches other than the main branch start builds.","enum":["NONE","SELECTED","ALL"]},"selectedDeployBranches":{"type":"array","description":"Branches that start a build when they're updated or a pull request targets them.","items":{"type":"string"}},"prDeploysEnabled":{"type":"boolean","description":"Whether pull requests start builds when they target the main branch or, with the `SELECTED` strategy, a branch in `selectedDeployBranches`.\nHas no effect with the `ALL` strategy, which builds every branch."},"forksPrDeploysEnabled":{"type":"boolean","description":"Whether build starts for PRs from forks."},"visualReviewCheckDisabled":{"type":"boolean","default":false,"description":"Whether the Visual review check is disabled. A disabled check is reported as skipped instead of pending."},"createdAt":{"description":"Time when Reunite created the project source.","type":"string","format":"date-time","readOnly":true},"updatedAt":{"description":"Time of the last change to the project source.","type":"string","format":"date-time","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["projectSource"],"readOnly":true}},"required":["id","uri","branchName","contentPath","isInternal","isMonorepo","branchDeployStrategy","selectedDeployBranches","prDeploysEnabled","forksPrDeploysEnabled","visualReviewCheckDisabled","createdAt","updatedAt","object"]}},"components/schemas/ProjectSourceList":{"id":"components/schemas/ProjectSourceList","kind":"json-schema","title":"ProjectSourceList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/ProjectSource"}}},"required":["object","page","data"]}},"components/schemas/MountPath":{"id":"components/schemas/MountPath","kind":"json-schema","title":"MountPath","data":{"type":"string","description":"Path to the folder in the local repository where remote content is mounted. Paths outside of the project's `contentPath` are not allowed.","example":"apis/test/@v1"}},"components/schemas/AutoSync":{"id":"components/schemas/AutoSync","kind":"json-schema","title":"AutoSync","data":{"type":"boolean","default":true,"description":"Whether Reunite syncs changes from the remote automatically."}},"components/schemas/AutoSyncDisabledAt":{"id":"components/schemas/AutoSyncDisabledAt","kind":"json-schema","title":"AutoSyncDisabledAt","data":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Time when Reunite turned off auto-sync after repeated failed updates.\n`null` when auto-sync is on or a user turned it off.","example":"2021-08-25T10:00:00.000Z"}},"components/schemas/AutoMerge":{"id":"components/schemas/AutoMerge","kind":"json-schema","title":"AutoMerge","data":{"type":"boolean","default":false,"description":"Auto merge changes from remote."}},"components/schemas/MountBranchName":{"id":"components/schemas/MountBranchName","kind":"json-schema","title":"MountBranchName","data":{"type":"string","description":"Name of the branch to mount.","example":"main"}},"components/schemas/GenericRemoteError":{"id":"components/schemas/GenericRemoteError","kind":"json-schema","title":"GenericRemoteError","data":{"oneOf":[{"type":"null"},{"type":"object","properties":{"autoMerge":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the auto merge failure."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the error."},"buildId":{"type":"string","description":"ID of the build that triggered the auto merge."}},"required":["message","timestamp"]}},"required":["autoMerge"]}],"readOnly":true}},"components/schemas/LastSyncedAt":{"id":"components/schemas/LastSyncedAt","kind":"json-schema","title":"LastSyncedAt","data":{"type":["string","null"],"format":"date-time","description":"Last time remote processed the default branch update.\n`null` when the remote has never been synced.\nFor URL remotes it is updated on interval specified for the remote.","example":"2021-08-25T10:00:00.000Z"}},"components/schemas/SyncAttempts":{"id":"components/schemas/SyncAttempts","kind":"json-schema","title":"SyncAttempts","data":{"type":"integer","description":"Number of failed attempts to sync the remote. If this value exceeds **6**, automatic synchronization is disabled.","example":1}},"components/schemas/UrlRemote":{"id":"components/schemas/UrlRemote","kind":"json-schema","title":"UrlRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","contentType","url","fileName","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"URL"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"string","enum":["FOLDER","FILE"]},"url":{"description":"URL to the remote content.","type":"string","example":"https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml"},"interval":{"type":"number","description":"Interval in seconds to sync URL remote content.","minimum":900,"default":1800,"example":900},"fileName":{"type":"string","description":"File name of the remote content.","example":"openapi.yaml"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"lastFinishedUrlUpdateId":{"type":["string","null"],"description":"ID of the last finished URL update.","example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"uri":{"type":"string","format":"uri","description":"Canonical URI for the URL remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"components/schemas/CicdRemote":{"id":"components/schemas/CicdRemote","kind":"json-schema","title":"CicdRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"CICD"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"null","readOnly":true},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"type":"string","format":"uri","description":"Canonical URI for the CICD remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"components/schemas/PushProjectBuildStatus":{"id":"components/schemas/PushProjectBuildStatus","kind":"json-schema","title":"PushProjectBuildStatus","data":{"type":"object","required":["deploy","scorecard"],"properties":{"deploy":{"type":"object","properties":{"url":{"type":["string","null"],"description":"Deployment URL."},"status":{"type":"string","description":"Status of project deployment.","enum":["pending","running","success","failed","skipped"],"example":"running"}},"required":["status","url"]},"scorecard":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Scorecard name.","example":"Scorecard: Compliance API"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Scorecard status description."},"url":{"type":"string","description":"Scorecard URL."}},"required":["name","status","description","url"]}}}}},"components/schemas/Push":{"id":"components/schemas/Push","kind":"json-schema","title":"Push","data":{"type":"object","required":["id","remoteIds","commit","uploadedFiles","isOutdated","hasChanges","status"],"properties":{"id":{"description":"Push ID. Unique identifier prefixed with `push_`.","type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"push_01h2captefvs9bpg3v6twqqj9n","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["push"],"readOnly":true},"remoteIds":{"type":"array","items":{"type":"string","description":"Remote IDs. Unique identifier prefixed with `rem_` for pushed remotes.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$"}},"remoteId":{"type":"string","description":"Remote ID. Unique identifier prefixed with `rem_` for pushed remotes. Used only for single remote push.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","deprecated":true},"commit":{"type":"object","required":["message","branchName","author"],"description":"Commit details.","properties":{"message":{"type":"string","description":"Commit message.","example":"chore: Add new API"},"branchName":{"type":"string","description":"Branch name.","example":"main"},"sha":{"type":["string","null"],"description":"SHA of the commit.","example":"f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"url":{"type":["string","null"],"format":"uri","description":"Commit URL.","example":"https://gitlab.com/example-user/example-project/-/commit/f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"createdAt":{"type":["string","null"],"format":"date-time","description":"Commit creation date.","example":"2020-01-01T00:00:00.000Z"},"namespaceId":{"type":["string","null"],"description":"Git namespace ID (organization login for GitHub).","example":"Redocly"},"repositoryId":{"type":["string","null"],"description":"Git repository ID.","example":"redoc"},"author":{"description":"Commit author details.","type":"object","required":["email","name"],"properties":{"name":{"description":"Commit author name.","example":"John Doe"},"email":{"type":"string","description":"Commit author email.","format":"email","example":"johndoe@example.com"},"image":{"type":["string","null"],"description":"Commit author image URL.\nIf not provided, the default image is used.\nIf the image is not accessible, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) can be used."}}},"statuses":{"type":"array","readOnly":true,"description":"List of commit statuses set by the platform to the commit that triggered push.","items":{"type":"object","properties":{"name":{"type":"string","description":"Commit status name.","example":"Scorecard: Compliance API (org-slug/project-slug/remote-mount-path (remote))"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Commit status description."},"url":{"type":["string","null"],"description":"Commit status URL."}},"required":["name","status","description","url"]}}}},"scoutJobId":{"type":["string","null"],"pattern":"^job_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"`PROCESS_GIT_REPO` job, if any. Required for Scout pushes. Unique identifier prefixed with `job_`.","example":"job_01h2captefvs9bpg3v6twqqj9n"},"scoutJobContext":{"type":"string","writeOnly":true,"description":"Context of the `PROCESS_GIT_REPO` job, if any.\nApplies to Scout pushes only.\nUsed as commit status context.","example":"Team A"},"replace":{"type":"boolean","description":"Whether to replace the existing files.\nIf provided, all files from the remote are removed and the new files are added.\nIf not provided, the existing files are kept and the new files are added, overwriting the existing files where they overlap.","example":true,"default":false},"files":{"type":"object","writeOnly":true,"description":"Map of files to upload.","additionalProperties":{"description":"Files to push.","type":"string","format":"binary"}},"uploadedFiles":{"type":"array","readOnly":true,"description":"List of pushed files.","items":{"type":"object","description":"Pushed file.","required":["path","mimeType"],"properties":{"path":{"type":"string","description":"File path.","example":"some-path/index.html"},"mimeType":{"type":"string","description":"File MIME type.","example":"text/html"}}}},"isMainBranch":{"type":"boolean","example":true,"description":"Is push provided to the main branch."},"isOutdated":{"type":"boolean","readOnly":true,"description":"Indicates whether the push is discarded.\nIn case several pushes are performed in a row, the one with most recent commit is applied only.\nAlways `false` when commit's `createdAt` is omitted.","example":false},"hasChanges":{"type":"boolean","readOnly":true,"description":"Indicates if pushed files have changes.","example":false},"status":{"type":"object","readOnly":true,"description":"Status of the corresponding preview and production builds.","required":["preview","production"],"properties":{"preview":{"$ref":"#/components/schemas/PushProjectBuildStatus"},"production":{"$ref":"#/components/schemas/PushProjectBuildStatus"}}}}}},"components/schemas/PushList":{"id":"components/schemas/PushList","kind":"json-schema","title":"PushList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Push"}}},"required":["object","page","data"]}},"components/schemas/GitRemote":{"id":"components/schemas/GitRemote","kind":"json-schema","title":"GitRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","repositoryId","branchName","contentPath","contentType","providerType","credentialId","uri","object"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"GIT"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Time when a user last created or updated the remote.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"ID of the user who created the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"ID of the user who last created or updated the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"namespaceId":{"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","type":["string","null"]},"repositoryId":{"description":"Git provider identifier of the repository.","type":"string"},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"description":"Path to the connected folder in the remote repository.","type":"string"},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential."},"branchName":{"description":"Branch name in the remote repository.","type":"string","example":"dev"},"contentType":{"type":"string","enum":["FOLDER","FILE"],"example":"FILE"},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"description":"Canonical URI for the remote resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"},"lastFinishedGitUpdateId":{"type":["string","null"],"description":"ID of the last finished Git update.","readOnly":true,"example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh"},"errors":{"$ref":"#/components/schemas/GenericRemoteError"}}}},"components/schemas/Remote":{"id":"components/schemas/Remote","kind":"json-schema","title":"Remote","data":{"oneOf":[{"$ref":"#/components/schemas/GitRemote"},{"$ref":"#/components/schemas/UrlRemote"},{"$ref":"#/components/schemas/CicdRemote"}],"discriminator":{"propertyName":"type","mapping":{"GIT":"#/components/schemas/GitRemote","URL":"#/components/schemas/UrlRemote","CICD":"#/components/schemas/CicdRemote"}}}},"components/schemas/RemoteList":{"id":"components/schemas/RemoteList","kind":"json-schema","title":"RemoteList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Remote"}}},"required":["object","page","data"]}},"schema_0":{"kind":"json-schema","data":{"type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `org_`."},"id":"schema_0"},"schema_1":{"kind":"json-schema","data":{"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `exp_`."},"id":"schema_1"},"schema_2":{"kind":"json-schema","data":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"id":"schema_2"}},"exampleStore":{},"securitySchemeStore":{"ApiKey":{"id":"ApiKey","type":"http","scheme":"bearer","description":{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"API key is required to access API."},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{},"children":[],"type":"softbreak","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":"Create an API key by visiting "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"href":"https://app.cloud.redocly.com/"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"Platform"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"link","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" and navigating to "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"Access"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"strong","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" > "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"API Keys"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"strong","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" page."},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"inline","location":{"start":{"line":0},"end":{"line":2}}}],"type":"paragraph","location":{"start":{"line":0},"end":{"line":2}}}],"type":"document"}}},"specVersion":"3.1.0"},"definition":{"openapi":"3.1.0","info":{"description":"Redocly platform API is a REST API over HTTPS for accessing and managing Redocly platform resources.\n\nThe API supports the following use cases:\n\n- Automation of organization and project workflows\n- Integration with internal systems\n- Development of customer-facing integrations\n\nTechnical characteristics:\n\n- Resource-oriented URLs\n- JSON request and response bodies\n- Standard HTTP methods and status codes\n- Filtering and search on selected collection endpoints\n\nEndpoint availability depends on subscription plan, organization settings, and product rollout status.\nThe API description is the authoritative reference.\nOrganizations for which an endpoint is not enabled should contact support.\n\n## Authentication\n\nThe API uses API keys for authentication.\nAuthentication requirements are defined per operation in the API description.\n\nAPI keys are intended for server-to-server integration.\nAPI keys are created as described in [Manage API keys](https://redocly.com/docs/realm/reunite/organization/api-keys).\nThe key is transmitted as a Bearer token:\n\n```http\nAuthorization: Bearer <api_key>\n```\n\nKeys must meet the following requirements:\n\n- Stored in a secure secret management system (not in client-side application code)\n- Rotated on a regular basis\n- Revoked when no longer required\n- Limited to the minimum set of endpoints and environments necessary for the integration\n\nEvery operation states the authentication it accepts in its own `security` section.\nTypical responses include:\n\n- `401 Unauthorized` (missing, invalid, or expired credentials)\n- `403 Forbidden` (credentials are valid but insufficient for the requested action)\n\n## Pagination\n\nList endpoints implement cursor-based pagination.\nEach response includes a `page` object and the results in the `data` array.\n\nSupported query parameters:\n\n- `limit`: values from `1` to `100`, default `10`\n- `after` and `before`: cursor navigation\n- `sort`: for example `-id` or `id`\n\nThe `page` object contains:\n\n- `nextPage`: the path of the next page, or `null` when there is no next page\n- `previousPage`: the path of the previous page, or `null` when there is no previous page\n- `limit`\n\n`nextPage` and `previousPage` are paths relative to the API server URL.\nThey keep the query parameters of the request, such as `limit`, `filter`, and `sort`.\n`nextPage` sets `after` to the cursor of the next page, and `previousPage` sets `before` to the cursor of the previous page.\nTo get the adjacent page, append the value to the server URL as a string:\n\n```text\nhttps://app.cloud.redocly.com/api + /orgs/org_123/projects?limit=10&after=a25fgaksjf23la==\n= https://app.cloud.redocly.com/api/orgs/org_123/projects?limit=10&after=a25fgaksjf23la==\n```\n\nDo not resolve the value as a relative URL, for example with `new URL(nextPage, serverUrl)`.\nThe leading `/` replaces the `/api` path of the server URL.\n\nA typical sequence:\n\n1. Request the first page with `?limit=10`.\n2. Read `page.nextPage`.\n3. Request the server URL followed by `page.nextPage`.\n4. Continue until `nextPage` is `null`.\n\nThe cursors are opaque, and their internal structure is subject to change.\nTo build a request yourself, send the `after` value from `nextPage`, or the `before` value from `previousPage`, with your other query parameters.\n\n## Filter results\n\n**Filtering** uses the `?filter=` parameter with `field:value` syntax.\nThe supported forms include:\n\n- Exact match: `firstName:Casey`\n- Case-insensitive substring match: `firstName~jo`\n- Multiple values: `firstName:Casey,Jordan`, `status:success,pending`\n- Numeric or date-time ranges: `amount:1..10`, ISO 8601 date-times\n- Relative durations for date-time fields: `30d`, `2w`, `6mo`, `1y`, `all` (units: `s`, `m`, `h`, `d`, `w`, `mo`, `y`)\n- Nested fields: `team.user.email:casey.smith@acme-inc.com`\n- Negation: `-firstName:Casey`\n- Logical operators: `AND`, `OR`\n\nCombine multiple conditions by separating `field:value` pairs with a space.\nA space is treated as an implicit `AND`, so `firstName:Casey isAdmin:true` and `firstName:Casey AND isAdmin:true` are equivalent.\nUse `OR` to match alternatives.\n`AND` binds more tightly than `OR`, so `role:admin OR role:editor isActive:true` is evaluated as `role:admin OR (role:editor AND isActive:true)`.\nGrouping with parentheses is not supported.\n\nFor a single-valued field, comma-separated values and `OR` are equivalent: `role:admin,editor` matches the same records as `role:admin OR role:editor`.\nThey are not interchangeable when the field targets a to-many relation, when negation is applied (`-role:admin,editor` matches neither value, whereas `-role:admin OR -role:editor` matches every record), or when matching `null`.\n\nExplicit date-time values use ISO 8601.\nValues that contain spaces, commas, or `..` must be enclosed in quotation marks.\n`number`, `boolean`, and `null` values do not require quotation marks.\n\n```text\n?filter=firstName:Casey\n?filter=firstName~jo\n?filter=firstName:Casey,Jordan\n?filter=amount:1..10\n?filter=createdAt:30d\n?filter=team.user.email:casey.smith@acme-inc.com\n?filter=-firstName:Casey\n?filter=firstName:Casey isAdmin:true\n?filter=firstName:Casey AND isAdmin:true\n?filter=role:admin OR role:editor\n?filter=createdAt:2021-02-14T13:30:00.000Z\n?filter=description:\"The story called \\\"The Sky and the Sea.\\\"\"\n?search=casey\n```\n\n**Search** uses the `?search=` parameter where the operation supports it.\nIts behavior is defined per endpoint in the API description.\n\n## Errors\n\nError responses commonly use the `application/problem+json` media type.\nFields may include:\n\n- `type`\n- `title`\n- `status`\n- `detail` (optional)\n- `instance` (optional)\n- `object` (always `problem`)\n- `requestId` (optional)\n- `errors` (optional array)\n\nFrequently returned HTTP status codes:\n\n- `400`: validation failure or malformed input\n- `401`: authentication failure\n- `403`: authorization failure\n- `404`: resource not found\n- `409`: conflict with current state\n- `429`: rate limit exceeded\n- `500`: server error\n\nAdditional behavior:\n\n- Certain endpoints may return `402` when access depends on subscription plan or billing state.\n\nTroubleshooting:\n\n- Begin with the HTTP status code.\n- Review the `detail` and `errors` fields.\n\nInclude the following in support requests:\n\n- The complete response payload\n- Sufficient request context to reproduce the issue\n\n## Rate limits\n\nRate limiting preserves service stability and equitable usage.\n\nThe API description defines limits with the `x-rateLimit` extension.\nThese organization quotas apply to requests authenticated with an **API key** that belongs to your organization.\nExample properties:\n\n- `events` - the number of events allowed within the window\n- `window` - the length of the window, for example `1m`\n\nEnforcement:\n\n- For API keys, limits apply **per organization**: all API keys for the same organization share a single counter for a given limit.\n- Unauthenticated traffic to public endpoints does **not** consume these organization counters.\n  It is limited separately (for example by per-client protections at the edge).\n  This mechanism prevents anonymous callers from exhausting an organization's quota.\n- Limits may be defined per endpoint.\n- Limits may be overridden per organization or per endpoint.\n\nWhen a request exceeds the applicable limit, the API returns `429 Too Many Requests` and includes a `Retry-After` header with the number of seconds to wait before the next request.\n\nSend requests for increased throughput to `team@redocly.com` and include:\n\n- Organization ID\n- Affected endpoints\n- Expected request rate\n- Business justification\n","version":"1.0.1","title":"Redocly platform","termsOfService":"https://redocly.com/subscription-agreement","contact":{"name":"API Support","email":"team@redocly.com","url":"https://github.com/Redocly/redocly"},"license":{"name":"Redocly","url":"https://redocly.com/subscription-agreement"}},"servers":[{"url":"https://app.cloud.redocly.com/api","description":"Production main server."},{"url":"https://app.cloud.eu.redocly.com/api","description":"Production EU server."}],"tags":[{"name":"Audit log exports","description":"Export organization audit logs for compliance, analysis, or archival."},{"name":"Credentials","description":"Operations related to credentials."},{"name":"Feedback","description":"Operations related to feedback."},{"name":"Project sources","description":"Operations related to project sources."},{"name":"Pushes","description":"Operations related to pushes."},{"name":"Remotes","description":"Operations related to remotes."}],"paths":{"/orgs/{orgId}/audit-log-export-jobs":{"post":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"createAuditLogExportJob","summary":"Start an audit log export job","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nCreates an asynchronous audit log export job.\nPoll the job status endpoint until `status` is `COMPLETED`, then download from the export results endpoint.","x-rateLimit":{"events":60,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"name":"filter","in":"query","required":false,"description":"Standard list `filter` query. Supported fields for audit exports:\n- `type` — Event type.\n  When omitted, exports include events of all types.\n  Values must be valid audit log event types.\n  Unsupported values return `400`.\n\nFilter fields other than `type` are ignored.","schema":{"type":"string"},"example":"type:com.redocly.apiKey.created"},{"name":"start","in":"query","description":"Start of the time range in YYYY-MM-DD format. When `end` is omitted, exports include events from `start` through `start + 31 days`.","required":false,"example":"2026-01-01","schema":{"type":"string","format":"date"}},{"name":"end","in":"query","description":"End of the time range in YYYY-MM-DD format. When `start` is omitted, exports include events from `end - 31 days` through `end`. The time window between `start` and `end` must not exceed 31 days.","required":false,"example":"2026-01-31","schema":{"type":"string","format":"date"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json"},"description":"Output file format for the generated download.","example":"json"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"201":{"description":"Export job created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogExportJobCreated"},"example":{"id":"exp_01hh1t9sa6gwfv5naz04gr7ehm","createdAt":"2024-01-15T12:00:00.000Z"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/audit-log-export-jobs/{exportJobId}":{"get":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"getAuditLogExportJob","summary":"Retrieve an audit log export job","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nRetrieve the status of an audit log export job.\nPoll this endpoint until `status` is `COMPLETED`, then download the file from the export results endpoint.","x-rateLimit":{"events":300,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ExportJobId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogExportJob"},"example":{"id":"exp_01hh1t9sa6gwfv5naz04gr7ehm","status":"COMPLETED","createdAt":"2024-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/audit-log-export-results/{exportJobId}":{"get":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"getAuditLogExportResult","summary":"Retrieve an audit log export file","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nDownload the file generated by an audit log export job.\nThe file is available only after the export job completes.\nWhile the job status is `IN_PROGRESS` or `FAILED`, this endpoint returns `404`.","x-rateLimit":{"events":60,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ExportJobId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export file. Media type matches the `format` from the create-job request.","headers":{"Content-Disposition":{"description":"Attachment hint for browsers and HTTP clients. Suggested filename: `{exportJobId}.json` or `{exportJobId}.csv`.","schema":{"type":"string"},"example":"attachment; filename=\"exp_01hh1t9sa6gwfv5naz04gr7ehm.json\""}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogExportEvent"}},"example":[{"id":"evt_2fxb8r4kq7m3ndp9z6ja501","object":"event","type":"com.redocly.pullRequest.created","time":"2026-03-31T15:27:30.815Z","subject":"pr_7wnk3jm9xp2d4rv8qh5a01","actor":{"id":"usr_01h2r5f6qy8kr42p8yfw52spq6","object":"user","uri":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"},"clientIp":"198.51.100.42","projectId":"prj_01hh1t9sa6gwfv5naz04gr7ehm","projectSlug":"my-project"}]},"text/csv":{"schema":{"type":"string","format":"binary"},"example":"id,object,type,time,subject,actor,clientIp,projectId,projectSlug\nevt_2fxb8r4kq7m3ndp9z6ja501,event,com.redocly.pullRequest.created,2026-03-31T15:27:30.815Z,pr_7wnk3jm9xp2d4rv8qh5a01,\"{\"\"id\"\":\"\"usr_01h2r5f6qy8kr42p8yfw52spq6\"\",\"\"object\"\":\"\"user\"\",\"\"uri\"\":\"\"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6\"\"}\",198.51.100.42,prj_01hh1t9sa6gwfv5naz04gr7ehm,my-project\n"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/credential-rotations":{"post":{"tags":["Credentials"],"security":[{"ApiKey":[]}],"summary":"Create a credential rotation","description":"Replaces the access token of a shared GitLab, Azure DevOps, or Bitbucket token credential.\nReunite validates the new token with the Git provider before saving it.\nRotating any other credential type returns `400`.\n\nTo find the `credentialId`, list the sources or remotes of the project that uses the credential.\n\nOnly shared credentials can be rotated with an API key. Personal credentials return `404`.\nUse an API key with granular permissions that include `org.credentials.update`, or a legacy full access key.\nAPI keys with RBAC permissions return `403`.\n\nAfter saving the token, Reunite sets up webhooks again for the repositories that use the credential.\nRepositories where the webhook setup fails are listed in `warnings`.\n\nRequires `org.credentials.update` permission.","x-rateLimit":{"events":60,"window":"1m"},"operationId":"createCredentialRotation","parameters":[{"$ref":"#/components/parameters/OrgId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialRotationRequest"}}}},"responses":{"200":{"description":"Credential access token replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialPatchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback":{"get":{"tags":["Feedback"],"summary":"List all feedback","description":"List all feedback.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listFeedback","security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Sort","description":"Feedback list can be sorted by the following properties:\n  - `id`\n  - `createdAt`\n  - `path`\n  - `email`\n  - `score`\n  - `agent`\n  - `targetFeature`\n\nTo sort in descending order, prefix the field with `-` (for example `-createdAt`).\nTo sort in ascending order, use the field name without a prefix (for example `createdAt`).\n\nBy default, feedback list is sorted by `id` in descending order, which corresponds to the newest feedback first."},{"$ref":"#/components/parameters/Filter","description":"Filter feedback by:\n  - `createdAt`\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`\n  - `status` (one of `NEW`, `IN_REVIEW`, `RESOLVED`, `ARCHIVED`, `SPAM`)\n  - `feedbackComponent` (one of `SENTIMENT`, `RATING`, `COMMENT`, `MOOD`, `PROBLEM`, `SCALE`)\n  - `origin` (one of `FORM`, `API`, `MCP`)\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Search","description":"Search feedback by query string.\n\nFeedback is searched by:\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback/{feedbackId}":{"get":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Retrieve a feedback item","description":"Retrieve a feedback item.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":2000,"window":"1m"},"operationId":"getFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"patch":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Partially update a feedback item","description":"Partially update a feedback item.\n\nRequires `project.feedback.update` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"updateFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchFeedbackRequest"}}}},"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"delete":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Delete a feedback item","description":"Delete a feedback item.\n\nRequires `project.feedback.delete` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"deleteFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback-export":{"get":{"tags":["Feedback"],"summary":"Export feedback report","description":"Download a feedback report as CSV or JSON file.\nResponse Content-Type is `text/csv` when `format=csv` and `application/json` when `format=json`.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":10,"window":"1m"},"operationId":"exportFeedbackReport","security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"name":"format","in":"query","required":false,"description":"Export file format. Defaults to `csv`.","schema":{"type":"string","enum":["csv","json"],"default":"csv"},"example":"csv"},{"$ref":"#/components/parameters/After","description":"Cursor from `page.nextPage` in a **List all feedback** response.\nThe export includes only the rows after this cursor."},{"$ref":"#/components/parameters/Before","description":"Cursor from `page.previousPage` in a **List all feedback** response.\nThe export includes only the rows before this cursor."},{"name":"limit","description":"Maximum number of feedback rows to include in the export (from the current sort order).\n\nWhen omitted, the export includes up to 1000 rows.\nRequest a larger export explicitly, up to the maximum.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"example":10000},{"$ref":"#/components/parameters/Sort","description":"Feedback report can be sorted by the following properties:\n  - `id`\n  - `createdAt`\n  - `path`\n  - `email`\n  - `score`\n  - `agent`\n  - `targetFeature`\n\nTo sort in descending order, prefix the field with `-` (for example `-createdAt`).\nTo sort in ascending order, use the field name without a prefix (for example `createdAt`).\n\nBy default, feedback report is sorted by `id` in descending order, which corresponds to the newest feedback first."},{"$ref":"#/components/parameters/Filter","description":"Filter feedback by:\n  - `createdAt`\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`\n  - `status` (one of `NEW`, `IN_REVIEW`, `RESOLVED`, `ARCHIVED`, `SPAM`)\n  - `feedbackComponent` (one of `SENTIMENT`, `RATING`, `COMMENT`, `MOOD`, `PROBLEM`, `SCALE`)\n  - `origin` (one of `FORM`, `API`, `MCP`)\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Search","description":"Search feedback by query string.\n\nFeedback is searched by:\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export file.\nMedia type depends on the `format` query parameter.\n\nThe response is sent as a download: `Content-Disposition` is `attachment` with a generated filename unless the server chooses otherwise.\n\nDefault filename pattern: `feedback_export_{orgId}_{projectId}_{timestamp}.{format}`, where `{timestamp}` is milliseconds since the Unix epoch and `{format}` is either `csv` or `json`.","headers":{"Content-Disposition":{"description":"Attachment hint for browsers and HTTP clients.\nIncludes the suggested filename in the `filename` parameter (quoted).\n\nBy default the filename follows `feedback_export_{orgId}_{projectId}_{timestamp}.{format}`, using the same `orgId` and `projectId` as in the path and a millisecond timestamp.","schema":{"type":"string"},"example":"attachment; filename=\"feedback_export_org_01hh1t9sa6gwfv5naz04gr7ehm_prj_01hh1t9sa6gwfv5naz04gr7ehm_1715432100123.csv\""}},"content":{"text/csv":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/sources":{"get":{"tags":["Project sources"],"security":[{"ApiKey":[]}],"summary":"List all project sources","description":"Lists the source of the project.\nA project has exactly one source, so the list always holds one item.\nThe pagination parameters are accepted for consistency with other list operations.\nA source in an external Git repository includes the `credentialId` of the credential that Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\n\nRequires `org.project.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listProjectSources","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Limit"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSourceList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/sources/{sourceId}":{"get":{"tags":["Project sources"],"security":[{"ApiKey":[]}],"summary":"Retrieve a project source","description":"Retrieves the source of the project.\nA source in an external Git repository includes the `credentialId` of the credential that Reunite uses to access the repository.\n\nRequires `org.project.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"getProjectSourceById","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/SourceId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSource"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/pushes":{"post":{"operationId":"push","summary":"Push files to remote","x-rateLimit":{"events":300,"window":"1m"},"security":[{"ApiKey":[]}],"description":"Push discovered files as a remote content.\nFiles should be sent as a `multipart/form-data`.\nCommit details like commit message and author can be sent as a JSON object in the `commit` field.\nThe complete multipart body must not exceed 500 MiB, including files, fields, and multipart overhead.\n\nRequires `project.remotes.update` permission.\nThe CLI `push` command creates or updates the remote before it pushes files, so it also requires `project.remotes.create`.","tags":["Pushes"],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Push"}}}},"responses":{"201":{"description":"Content pushed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"413":{"description":"Push body exceeds 500 MiB.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"get":{"tags":["Pushes"],"security":[{"ApiKey":[]}],"summary":"List all pushes","description":"List all pushes.\n\nRequires `project.remotes.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listPushes","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Sort","description":"Push list can be sorted by `id` only.\n\nTo sort in descending order, use `-id`.\nTo sort in ascending order, use `id`.\n\nBy default, push list is sorted by `id` in descending order, which corresponds to the newest pushes first."},{"$ref":"#/components/parameters/Filter","description":"Filter pushes by:\n  - `id`\n  - `isMainBranch`\n  - `replace`\n  - `scoutJobId`\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Search","description":"Search pushes by query string.\n\nPushes are searched by:\n  - `id`\n  - `scoutJobId`\n  - `isMainBranch` and `replace`, only when the search term is exactly `true` or `false`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/pushes/{pushId}":{"get":{"security":[{"ApiKey":[]}],"tags":["Pushes"],"operationId":"getPush","summary":"Retrieve a push","description":"Retrieve a push.\n\nRequires `project.remotes.read` permission.","x-rateLimit":{"events":2000,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/PushId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/remotes":{"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"}],"get":{"operationId":"listRemotes","summary":"List all remotes","x-rateLimit":{"events":300,"window":"1m"},"security":[{"ApiKey":[]}],"description":"{% configOptionRequirements plans=[\"Scale\", \"Enterprise\"] /%}\n\nLists the remote content of the project.\nA Git remote includes the `credentialId` of the credential that Reunite uses to access its repository.\nUse it to rotate the access token of the credential.\n\nRequires `project.remotes.read` permission.","tags":["Remotes"],"parameters":[{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Sort","description":"Remote list can be sorted by `id` and `createdAt`.\n\nTo sort in descending order, prefix the field with `-`, for example `-createdAt`.\nTo sort in ascending order, use the field name, for example `createdAt`.\n\nBy default, remote list is sorted by `id` in descending order, which corresponds to the newest remotes first."},{"$ref":"#/components/parameters/Filter","description":"Filter remotes by:\n  - `id`\n  - `mountBranchName`\n  - `type`, one of `GIT`, `URL`, or `CICD`\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Search","description":"Search remotes by query string.\n\nRemotes are searched by:\n  - `id`\n  - `mountPath`\n  - `mountBranchName`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"402":{"$ref":"#/components/responses/PaymentRequiredError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/remotes/{remoteId}":{"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/RemoteId"}],"get":{"security":[{"ApiKey":[]}],"operationId":"getRemote","summary":"Retrieve a remote","x-rateLimit":{"events":2000,"window":"1m"},"description":"{% configOptionRequirements plans=[\"Scale\", \"Enterprise\"] /%}\n\nRetrieves a remote of the project.\nA Git remote includes the `credentialId` of the credential that Reunite uses to access its repository.\n\nRequires `project.remotes.read` permission.","tags":["Remotes"],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Remote"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"402":{"$ref":"#/components/responses/PaymentRequiredError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"parameters":[{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}]}}},"components":{"schemas":{"Problem":{"type":"object","title":"Problem","properties":{"type":{"type":"string","format":"uri-reference","description":"URI reference that uniquely identifies the problem type only in the context of the provided API.\nOpposed to the specification in RFC 9457 (formerly RFC 7807), it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.\n","default":"about:blank","example":"/some/uri-reference"},"title":{"type":"string","description":"Short summary of the problem type.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some title for the error situation"},"status":{"type":"integer","format":"int32","description":"HTTP status code generated by the origin server for this occurrence of the problem.\n","minimum":100,"exclusiveMaximum":600,"example":400},"detail":{"type":"string","description":"Human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some description for the error situation"},"instance":{"type":"string","format":"uri-reference","description":"URI reference that identifies the specific occurrence of the problem. For example, by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code.\n","example":"/some/uri-reference#specific-occurrence-context"},"object":{"type":"string","enum":["problem"]},"requestId":{"type":"string","description":"Unique identifier of the request that produced this problem.\nShare it with support when reporting the error.\n","example":"req-abc-123"},"code":{"type":"string","description":"Machine-readable identifier of the problem, stable across wording changes of `title` and `detail`.\nPresent only for problems a client is expected to branch on; such a problem explains the occurrence in `detail`.\n","example":"usageLimitExceeded"},"reason":{"type":"string","description":"Machine-readable refinement of `code` that names which rule produced the problem.\n","example":"MAX_ACTIVE_RUNS_PER_ORGANIZATION_REACHED"},"errors":{"type":"array","description":"Additional information about the error situation.\nMay be omitted if no additional information is available.\n"}},"required":["type","title","status","object"]},"Page":{"type":"object","properties":{"nextPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the next page, relative to the API server URL.\nAppend the value to the server URL to get the next page.\nThe path keeps the query parameters of the request and sets `after` to the cursor of the next page.\nWhen `null`, there is no next page.","example":"/orgs/org_123/projects?limit=10&after=a25fgaksjf23la=="},"previousPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the previous page, relative to the API server URL.\nAppend the value to the server URL to get the previous page.\nThe path keeps the query parameters of the request and sets `before` to the cursor of the previous page.\nWhen `null`, there is no previous page.","example":"/orgs/org_123/projects?limit=10&before=bfg23aksjf23zb1=="},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Value showing how many items are in the page limit."}},"required":["nextPage","previousPage","limit"]},"AuditLogExportJobCreated":{"type":"object","description":"Details of the created audit log export job.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","createdAt"]},"AuditLogExportStatus":{"type":"string","description":"Current status of the export job.","enum":["IN_PROGRESS","COMPLETED","FAILED"]},"AuditLogExportJob":{"type":"object","description":"Audit log export job status and metadata.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"status":{"$ref":"#/components/schemas/AuditLogExportStatus"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","status","createdAt"]},"AuditLogEventType":{"type":"string","description":"CloudEvent `type` value emitted for an audit-loggable action.\nOnly events whose `type` is in this list are returned by the audit log export endpoints.","enum":["com.redocly.apiKey.created","com.redocly.apiKey.updated","com.redocly.apiKey.revoked","com.redocly.gitIdentity.linked","com.redocly.gitIdentity.unlinked","com.redocly.gitIdentity.removed","com.redocly.scimCredential.created","com.redocly.scimCredential.revoked","com.redocly.invite.created","com.redocly.invite.resent","com.redocly.userInvite.accepted","com.redocly.membership.created","com.redocly.membership.updated","com.redocly.membership.removed","com.redocly.team.created","com.redocly.team.deleted","com.redocly.teamMember.added","com.redocly.teamMember.removed","com.redocly.syncedTeamMember.added","com.redocly.syncedTeamMember.removed","com.redocly.teamManager.added","com.redocly.teamManager.removed","com.redocly.organization.created","com.redocly.organization.updated","com.redocly.organization.slugUpdated","com.redocly.organization.removed","com.redocly.project.created","com.redocly.project.updated","com.redocly.project.slugUpdated","com.redocly.project.urlUpdated","com.redocly.project.removed","com.redocly.projectConfig.updated","com.redocly.projectCustomDomain.verified","com.redocly.projectCustomDomain.removed","com.redocly.branch.created","com.redocly.branch.updated","com.redocly.branch.removed","com.redocly.gitAccess.pushed","com.redocly.remote.created","com.redocly.remote.deleted","com.redocly.gitCredential.rotated","com.redocly.notificationSettings.updated","com.redocly.notifications.disabled","com.redocly.subscription.updated","com.redocly.subscription.churned","com.redocly.subscription.reactivated","com.redocly.subscription.trialEnded","com.redocly.pullRequest.created","com.redocly.pullRequest.closed","com.redocly.pullRequest.reopened","com.redocly.pullRequest.merged","com.redocly.pullRequest.approved","com.redocly.pullRequest.requestedChanges","com.redocly.pullRequest.reviewRequested","com.redocly.pullRequest.readyForReview","com.redocly.pullRequest.markedAsDraft","com.redocly.pullRequest.commented","com.redocly.pullRequest.commitPushed","com.redocly.pullRequest.forcePushed","com.redocly.pullRequest.visualReviewUpdated"],"example":"com.redocly.pullRequest.created"},"id":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"slug":{"description":"Project slug.","type":"string","example":"project_red-owl-352"},"AuditLogExportEvent":{"type":"object","description":"One audit log export record.","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique event identifier.","example":"evt_2fxb8r4kq7m3ndp9z6ja501"},"object":{"type":"string","description":"Entity name.","enum":["event"],"readOnly":true},"type":{"$ref":"#/components/schemas/AuditLogEventType"},"time":{"type":"string","format":"date-time","description":"Event timestamp (ISO 8601).","example":"2026-04-15T14:43:08.172Z"},"subject":{"type":"string","description":"Subject URI or resource ID the event refers to.","example":"pr_7wnk3jm9xp2d4rv8qh5a01"},"projectId":{"$ref":"#/components/schemas/id"},"projectSlug":{"$ref":"#/components/schemas/slug"},"clientIp":{"type":"string","description":"IP address of the client that triggered the event.","example":"198.51.100.42"},"actor":{"oneOf":[{"type":"null"},{"type":"object","description":"Actor that triggered the event.","properties":{"id":{"type":"string","pattern":"^(usr|gid|wh|cj)_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01h2r5f6qy8kr42p8yfw52spq6"},"object":{"type":"string","enum":["user","gitIdentity","webhook","cronJob"],"example":"user"},"uri":{"type":"string","format":"uri","example":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"}},"required":["id","object","uri"],"additionalProperties":false}]}},"additionalProperties":false},"CredentialType":{"type":"string","format":"enum","description":"Credential type.","enum":["GITHUB_USER","GITLAB_USER","BITBUCKET_USER","AZURE_USER","URL","GITHUB_CLOUD_APP_INSTALLATION","GITHUB_SERVER_APP_INSTALLATION","GITHUB_SERVER_APP","GITLAB_SELF_MANAGED_APP","GITHUB_CLOUD_INTERNAL_APP_INSTALLATION","MCP_HEADERS","MCP_BEARER","MCP_API_KEY","SUPPORT_DESK"]},"AuthType":{"type":"string","format":"enum","description":"Credential auth type.","enum":["BASIC","PERSONAL_ACCESS_TOKEN","PERSONAL_ACCESS_TOKEN_FOR_ORGANIZATION","PROJECT_ACCESS_TOKEN","INSTALLATION_ACCESS_TOKEN","OAUTH2","BEARER","API_KEY"]},"GitHubInstallationPublicCredential":{"title":"GitHubInstallationPublicCredential","type":"object","properties":{"installationId":{"type":"number"},"namespaceId":{"type":"string"},"repositoryId":{"type":"string"}},"required":["namespaceId","repositoryId"]},"GitHubEEServerAppPublicCredential":{"title":"GitHubEEServerAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"clientId":{"type":"string"},"url":{"type":"string"},"apiUrl":{"type":"string"},"appName":{"type":"string"}},"required":["appId","clientId","url"]},"GitLabSelfManagedAppPublicCredential":{"title":"GitLabSelfManagedAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"url":{"type":"string"}},"required":["appId","url"]},"AzureDevOpsUserPATPublicCredential":{"title":"AzureDevOpsUserPATPublicCredential","type":"object","properties":{"organizationName":{"type":"string"}},"required":["organizationName"]},"BitbucketCloudUserProjectTokenPublicCredential":{"title":"BitbucketCloudUserProjectTokenPublicCredential","type":"object","properties":{"workspace":{"type":"string","description":"This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example: {workspace UUID}."}},"required":["workspace"]},"McpPublicCredential":{"title":"McpPublicCredential","type":"object","description":"Non-secret part of the credential of an agent MCP server: the header that carries the API key, and the names of the secret headers besides the authentication header. Values live in the secret store.","properties":{"header":{"description":"Request header that carries the API key; absent for a bearer token.","type":"string","example":"X-Api-Key"},"secretHeaderNames":{"description":"Names of the secret headers besides the authentication header.","type":"array","items":{"type":"string"},"example":["X-Tenant"]}},"required":["secretHeaderNames"]},"CredentialSchemaBase":{"title":"CredentialsSchemaBase","type":"object","properties":{"id":{"description":"Credential ID. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["credential"],"readOnly":true},"uri":{"description":"Canonical URI for the credential resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/credentials/cred_01h1s5z6vf2mm1mz3hevnn9va7"},"type":{"$ref":"#/components/schemas/CredentialType"},"authType":{"$ref":"#/components/schemas/AuthType"},"name":{"type":"string"},"description":{"type":"string"},"publicData":{"type":"object","description":"Credential public data.","oneOf":[{"$ref":"#/components/schemas/GitHubInstallationPublicCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppPublicCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppPublicCredential"},{"$ref":"#/components/schemas/AzureDevOpsUserPATPublicCredential"},{"$ref":"#/components/schemas/BitbucketCloudUserProjectTokenPublicCredential"},{"$ref":"#/components/schemas/McpPublicCredential"}]},"oAuth2Data":{"type":"object","description":"Credential OAuth2 data.","readOnly":true,"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"OAuth2 ID. Unique identifier of OAuth2 account.","example":"4acc1f09-1751-6f79-b156-b6877ee205a2"},"userName":{"type":"string","description":"OAuth2 user name.","example":"john-doe"},"displayName":{"type":"string","description":"OAuth2 display name.","example":"John Doe"},"email":{"type":"string","description":"OAuth2 email.","example":"john-doe@mail.com"},"avatarUrl":{"type":"string","description":"OAuth2 avatar URL.","example":"https://avatars.githubusercontent.com/u/1?v=4"}},"required":["id","userName","displayName"]},"userId":{"description":"User ID this credentials belongs to. Unique identifier prefixed with `usr_`.","type":"string","pattern":"^usr_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"isShared":{"type":"boolean","default":false},"isBroken":{"type":"boolean","default":false,"readOnly":true},"parentId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Credential parent ID. Unique identifier prefixed with `cred_`.","example":"cred_01h4e71x94vd68a1farnbfapzg"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","object","uri","type","createdAt","updatedAt"]},"AccessTokenCredential":{"title":"AccessTokenCredential","type":"object","writeOnly":true,"properties":{"accessToken":{"type":"string"}},"required":["accessToken"]},"OAuth2CodeCredential":{"title":"OAuth2CodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"OAuth code to be used to get access/refresh tokens.","type":"string","example":"Yzk5ZDczMzRlNDEwY"}},"required":["code"]},"GithubAppCodeCredential":{"title":"GithubAppCodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"GithubApp code to be used to get exchange code on App secrets.","type":"string","example":"Yzk5ZDczMzRlNDEwY"},"url":{"description":"GithubApp url to be used to get exchange code on App secrets.","type":"string","example":"https://github.app.com"}},"required":["code","url"]},"GitLabSelfManagedAppSecretCredential":{"title":"GitLabSelfManagedAppSecretCredential","type":"object","writeOnly":true,"properties":{"appSecret":{"type":"string"},"webhookSecret":{"type":"string"}},"required":["appSecret"]},"GitHubEEServerAppSecretCredential":{"title":"GitHubEEServerAppSecretCredential","type":"object","writeOnly":true,"properties":{"clientSecret":{"type":"string"},"privateKey":{"type":"string"},"webhookSecret":{"type":"string"}}},"CredentialSchema":{"title":"Credential","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchemaBase"},{"type":"object","properties":{"secretData":{"type":"object","description":"Credential secret data.","writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/AccessTokenCredential"},{"$ref":"#/components/schemas/OAuth2CodeCredential"},{"$ref":"#/components/schemas/GithubAppCodeCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppSecretCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppSecretCredential"}]}}}]},"CredentialPatchResponse":{"title":"CredentialPatchResponse","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchema"},{"type":"object","properties":{"warnings":{"type":"array","description":"Problems that do not block the update.\nFor example, Reunite cannot set up a webhook for a repository that uses this credential.\n","readOnly":true,"items":{"type":"string","example":"Failed to set up webhook for repository \"fe5d7747-af71-449a-951b-f781f54603af\": Azure DevOps token does not have sufficient permissions. Please check token scopes."}}},"required":["warnings"]}]},"CreateCredentialRotationRequest":{"title":"CreateCredentialRotationRequest","type":"object","properties":{"credentialId":{"description":"ID of the credential whose access token is replaced. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7"},"secretData":{"description":"New access token for the credential.","$ref":"#/components/schemas/AccessTokenCredential"}},"required":["credentialId","secretData"]},"Feedback":{"type":"object","title":"Feedback","additionalProperties":false,"properties":{"id":{"description":"Feedback ID. Unique identifier prefixed with `fb_`.","type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"fb_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["feedback"],"readOnly":true},"uri":{"description":"Canonical URI for the feedback resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/feedback/fb_01h1s5z6vf2mm1mz3hevnn9va7"},"email":{"type":["string","null"],"format":"email","maxLength":254,"description":"Email address of user who submitted the feedback or `null`."},"path":{"type":"string","minLength":1,"maxLength":1000,"description":"Absolute URL of the page where feedback is submitted (for example from the browser location). A value that is not a valid URL is accepted, but the feedback is marked as spam.","example":"https://example.com/docs/guide"},"location":{"type":["string","null"],"maxLength":5000,"description":"Identifies the location of the component.\nThis could be a code sample."},"lang":{"type":"string","maxLength":20,"description":"Identifies the language of the component's location.\nThis could be the language of a code sample, such as `js`, `php`, or `txt`."},"feedbackComponent":{"type":"string","description":"Name that identifies UI component.","enum":["SENTIMENT","RATING","COMMENT","MOOD","PROBLEM","SCALE"]},"score":{"description":"Numeric value that maps to the feedback component, such as thumbs down (-1) or thumbs up (1), or a 1-5 star rating scale.","type":["integer","null"],"minimum":-1,"maximum":10},"maxScore":{"description":"Maximum score for the feedback component.","type":["integer","null"],"minimum":0,"maximum":10},"reasons":{"type":"array","description":"List of preset reasons for feedback.","items":{"type":"string","maxLength":5000,"description":"Reason for feedback."}},"comment":{"type":"string","maxLength":5000,"description":"Free-form text feedback."},"agent":{"type":["string","null"],"maxLength":200,"description":"Name of the AI agent that submitted the feedback, or `null` for user-submitted feedback.","example":"Cursor"},"targetFeature":{"type":["string","null"],"maxLength":500,"description":"Documentation feature the feedback refers to (for agent submissions), or `null` for user-submitted feedback.","example":"Respect Monitoring API"},"origin":{"type":"string","description":"Origin of the feedback. `FORM` is the feedback form on the page, `API` is a direct API call (for example an agent that follows `llms.txt` instructions), and `MCP` is the MCP server `submit-feedback` tool. When omitted on create, defaults to `API` if `agent` is set and to `FORM` otherwise.","enum":["FORM","API","MCP"],"example":"MCP"},"metadata":{"type":"object","description":"Extra tracking fields. The server sets `userAgent`, `ipAddress`, `platform`, and `email` (read-only). `id`, `firstName`, `lastName`, and `auth_time` pass through if present but are not verified; do not use for access or identity. Any other key is stored with its value redacted to a placeholder.","properties":{"userAgent":{"type":"string","description":"User agent string of the browser that submitted the feedback. Populated by the server from the `User-Agent` header.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","readOnly":true},"ipAddress":{"type":"string","description":"IP address of the user who submitted the feedback. Populated by the server.","example":"127.0.0.1","readOnly":true},"platform":{"type":"string","description":"Platform from which the feedback originates. Populated by the server from the `Sec-Ch-Ua-Platform` header.","example":"Windows NT 10.0; Win64; x64","readOnly":true},"email":{"type":"string","format":"email","description":"Email address from the user's authentication context. Populated by the server from OIDC claims.","example":"john.doe@acme.com","readOnly":true},"id":{"type":"string","description":"Unverified; whatever the client sent. Not a trusted user ID."},"firstName":{"type":"string","description":"Unverified; client-supplied if present."},"lastName":{"type":"string","description":"Unverified; client-supplied if present."},"auth_time":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Unverified; client-supplied. Not a server-asserted session or token time."}},"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","readOnly":true},"organizationId":{"description":"Organization ID. Unique identifier prefixed with `org_`.","type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"org_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"projectId":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","readOnly":true},"internalCommentUpdatedAt":{"type":"string","format":"date-time","description":"Date and time when the internal comment is updated.","readOnly":true},"internalCommentUpdatedById":{"type":"string","description":"ID of the user who updated the internal comment.","readOnly":true}},"required":["id","uri","path","feedbackComponent","createdAt","object","organizationId","projectId","status","origin"]},"FeedbackList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Feedback"}}},"required":["object","page","data"]},"PatchFeedbackRequest":{"type":"object","title":"Feedback PATCH request","minProperties":1,"properties":{"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","writeOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","writeOnly":true}}},"GitProviderType":{"type":"string","format":"enum","description":"Git provider type.","enum":["GITHUB_CLOUD","GITHUB_SERVER","GITLAB_CLOUD","GITLAB_SELF_MANAGED","BITBUCKET_CLOUD","BITBUCKET_DATACENTER","AZURE_DEVOPS_SERVICES","AZURE_DEVOPS_SERVER"]},"GitProvider":{"type":"object","description":"Git provider configuration.","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/GitProviderType"},"name":{"type":"string","example":"Redocly GitLab"},"publicConfig":{"type":"object","properties":{"url":{"type":"string","example":"https://gitlab.redocly.dev"},"clientId":{"type":"string","example":"05489443ec38b38f2327cdde9d5f51f284ae1d726130b300ecda0a259010c759"},"appName":{"type":"string","example":"redocly"}}},"isCustom":{"type":"boolean","description":"Indicates whether this provider is a custom provider added to the organization."}},"required":["id","type","name","isCustom"]},"ProjectSource":{"type":"object","properties":{"id":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Project source ID. Unique identifier prefixed with `rem_`.","readOnly":true},"uri":{"description":"Canonical URI for the project source resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/sources/rem_01hc2rvwxf7jyj1er504khx8e7"},"branchName":{"description":"Main branch of the project.","type":"string","example":"main"},"contentPath":{"description":"Path to the project content in the repository.","type":"string","example":"/"},"repoName":{"description":"Name of the repository. Present when Reunite can access the repository.","type":"string","example":"Repo Name"},"repoUrl":{"description":"URL of the repository. Present when Reunite can access the repository.","type":"string","example":"https://github.com/example/example"},"isInternal":{"description":"Whether the project content is stored in the Reunite-hosted repository instead of an external Git repository. Internal sources have no Git provider fields and no credential.","type":"boolean","example":true},"isMonorepo":{"description":"Whether the project content is in a folder of the repository rather than at its root.","type":"boolean","example":true},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"providerConfig":{"$ref":"#/components/schemas/GitProvider","description":"Git provider of the repository."},"canAccessRepo":{"type":"boolean","example":true,"description":"Whether Reunite can access the repository with the source credential. `false` usually means that the access token is expired or revoked."},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\nAbsent for internal sources."},"sourceId":{"type":"string","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Use `id` instead.","deprecated":true},"namespaceId":{"type":["string","null"],"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","example":"azure-test-org"},"repositoryId":{"type":"string","description":"Git provider identifier of the repository.","example":"redocly-testing"},"branchDeployStrategy":{"type":"string","description":"Which branches other than the main branch start builds.","enum":["NONE","SELECTED","ALL"]},"selectedDeployBranches":{"type":"array","description":"Branches that start a build when they're updated or a pull request targets them.","items":{"type":"string"}},"prDeploysEnabled":{"type":"boolean","description":"Whether pull requests start builds when they target the main branch or, with the `SELECTED` strategy, a branch in `selectedDeployBranches`.\nHas no effect with the `ALL` strategy, which builds every branch."},"forksPrDeploysEnabled":{"type":"boolean","description":"Whether build starts for PRs from forks."},"visualReviewCheckDisabled":{"type":"boolean","default":false,"description":"Whether the Visual review check is disabled. A disabled check is reported as skipped instead of pending."},"createdAt":{"description":"Time when Reunite created the project source.","type":"string","format":"date-time","readOnly":true},"updatedAt":{"description":"Time of the last change to the project source.","type":"string","format":"date-time","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["projectSource"],"readOnly":true}},"required":["id","uri","branchName","contentPath","isInternal","isMonorepo","branchDeployStrategy","selectedDeployBranches","prDeploysEnabled","forksPrDeploysEnabled","visualReviewCheckDisabled","createdAt","updatedAt","object"]},"ProjectSourceList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/ProjectSource"}}},"required":["object","page","data"]},"MountPath":{"type":"string","description":"Path to the folder in the local repository where remote content is mounted. Paths outside of the project's `contentPath` are not allowed.","example":"apis/test/@v1"},"AutoSync":{"type":"boolean","default":true,"description":"Whether Reunite syncs changes from the remote automatically."},"AutoSyncDisabledAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Time when Reunite turned off auto-sync after repeated failed updates.\n`null` when auto-sync is on or a user turned it off.","example":"2021-08-25T10:00:00.000Z"},"AutoMerge":{"type":"boolean","default":false,"description":"Auto merge changes from remote."},"MountBranchName":{"type":"string","description":"Name of the branch to mount.","example":"main"},"GenericRemoteError":{"oneOf":[{"type":"null"},{"type":"object","properties":{"autoMerge":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the auto merge failure."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the error."},"buildId":{"type":"string","description":"ID of the build that triggered the auto merge."}},"required":["message","timestamp"]}},"required":["autoMerge"]}],"readOnly":true},"LastSyncedAt":{"type":["string","null"],"format":"date-time","description":"Last time remote processed the default branch update.\n`null` when the remote has never been synced.\nFor URL remotes it is updated on interval specified for the remote.","example":"2021-08-25T10:00:00.000Z"},"SyncAttempts":{"type":"integer","description":"Number of failed attempts to sync the remote. If this value exceeds **6**, automatic synchronization is disabled.","example":1},"UrlRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","contentType","url","fileName","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"URL"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"string","enum":["FOLDER","FILE"]},"url":{"description":"URL to the remote content.","type":"string","example":"https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml"},"interval":{"type":"number","description":"Interval in seconds to sync URL remote content.","minimum":900,"default":1800,"example":900},"fileName":{"type":"string","description":"File name of the remote content.","example":"openapi.yaml"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"lastFinishedUrlUpdateId":{"type":["string","null"],"description":"ID of the last finished URL update.","example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"uri":{"type":"string","format":"uri","description":"Canonical URI for the URL remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}},"CicdRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"CICD"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"null","readOnly":true},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"type":"string","format":"uri","description":"Canonical URI for the CICD remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}},"PushProjectBuildStatus":{"type":"object","required":["deploy","scorecard"],"properties":{"deploy":{"type":"object","properties":{"url":{"type":["string","null"],"description":"Deployment URL."},"status":{"type":"string","description":"Status of project deployment.","enum":["pending","running","success","failed","skipped"],"example":"running"}},"required":["status","url"]},"scorecard":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Scorecard name.","example":"Scorecard: Compliance API"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Scorecard status description."},"url":{"type":"string","description":"Scorecard URL."}},"required":["name","status","description","url"]}}}},"Push":{"type":"object","required":["id","remoteIds","commit","uploadedFiles","isOutdated","hasChanges","status"],"properties":{"id":{"description":"Push ID. Unique identifier prefixed with `push_`.","type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"push_01h2captefvs9bpg3v6twqqj9n","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["push"],"readOnly":true},"remoteIds":{"type":"array","items":{"type":"string","description":"Remote IDs. Unique identifier prefixed with `rem_` for pushed remotes.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$"}},"remoteId":{"type":"string","description":"Remote ID. Unique identifier prefixed with `rem_` for pushed remotes. Used only for single remote push.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","deprecated":true},"commit":{"type":"object","required":["message","branchName","author"],"description":"Commit details.","properties":{"message":{"type":"string","description":"Commit message.","example":"chore: Add new API"},"branchName":{"type":"string","description":"Branch name.","example":"main"},"sha":{"type":["string","null"],"description":"SHA of the commit.","example":"f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"url":{"type":["string","null"],"format":"uri","description":"Commit URL.","example":"https://gitlab.com/example-user/example-project/-/commit/f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"createdAt":{"type":["string","null"],"format":"date-time","description":"Commit creation date.","example":"2020-01-01T00:00:00.000Z"},"namespaceId":{"type":["string","null"],"description":"Git namespace ID (organization login for GitHub).","example":"Redocly"},"repositoryId":{"type":["string","null"],"description":"Git repository ID.","example":"redoc"},"author":{"description":"Commit author details.","type":"object","required":["email","name"],"properties":{"name":{"description":"Commit author name.","example":"John Doe"},"email":{"type":"string","description":"Commit author email.","format":"email","example":"johndoe@example.com"},"image":{"type":["string","null"],"description":"Commit author image URL.\nIf not provided, the default image is used.\nIf the image is not accessible, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) can be used."}}},"statuses":{"type":"array","readOnly":true,"description":"List of commit statuses set by the platform to the commit that triggered push.","items":{"type":"object","properties":{"name":{"type":"string","description":"Commit status name.","example":"Scorecard: Compliance API (org-slug/project-slug/remote-mount-path (remote))"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Commit status description."},"url":{"type":["string","null"],"description":"Commit status URL."}},"required":["name","status","description","url"]}}}},"scoutJobId":{"type":["string","null"],"pattern":"^job_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"`PROCESS_GIT_REPO` job, if any. Required for Scout pushes. Unique identifier prefixed with `job_`.","example":"job_01h2captefvs9bpg3v6twqqj9n"},"scoutJobContext":{"type":"string","writeOnly":true,"description":"Context of the `PROCESS_GIT_REPO` job, if any.\nApplies to Scout pushes only.\nUsed as commit status context.","example":"Team A"},"replace":{"type":"boolean","description":"Whether to replace the existing files.\nIf provided, all files from the remote are removed and the new files are added.\nIf not provided, the existing files are kept and the new files are added, overwriting the existing files where they overlap.","example":true,"default":false},"files":{"type":"object","writeOnly":true,"description":"Map of files to upload.","additionalProperties":{"description":"Files to push.","type":"string","format":"binary"}},"uploadedFiles":{"type":"array","readOnly":true,"description":"List of pushed files.","items":{"type":"object","description":"Pushed file.","required":["path","mimeType"],"properties":{"path":{"type":"string","description":"File path.","example":"some-path/index.html"},"mimeType":{"type":"string","description":"File MIME type.","example":"text/html"}}}},"isMainBranch":{"type":"boolean","example":true,"description":"Is push provided to the main branch."},"isOutdated":{"type":"boolean","readOnly":true,"description":"Indicates whether the push is discarded.\nIn case several pushes are performed in a row, the one with most recent commit is applied only.\nAlways `false` when commit's `createdAt` is omitted.","example":false},"hasChanges":{"type":"boolean","readOnly":true,"description":"Indicates if pushed files have changes.","example":false},"status":{"type":"object","readOnly":true,"description":"Status of the corresponding preview and production builds.","required":["preview","production"],"properties":{"preview":{"$ref":"#/components/schemas/PushProjectBuildStatus"},"production":{"$ref":"#/components/schemas/PushProjectBuildStatus"}}}}},"PushList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Push"}}},"required":["object","page","data"]},"GitRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","repositoryId","branchName","contentPath","contentType","providerType","credentialId","uri","object"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"GIT"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Time when a user last created or updated the remote.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"ID of the user who created the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"ID of the user who last created or updated the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"namespaceId":{"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","type":["string","null"]},"repositoryId":{"description":"Git provider identifier of the repository.","type":"string"},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"description":"Path to the connected folder in the remote repository.","type":"string"},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential."},"branchName":{"description":"Branch name in the remote repository.","type":"string","example":"dev"},"contentType":{"type":"string","enum":["FOLDER","FILE"],"example":"FILE"},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"description":"Canonical URI for the remote resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"},"lastFinishedGitUpdateId":{"type":["string","null"],"description":"ID of the last finished Git update.","readOnly":true,"example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh"},"errors":{"$ref":"#/components/schemas/GenericRemoteError"}}},"Remote":{"oneOf":[{"$ref":"#/components/schemas/GitRemote"},{"$ref":"#/components/schemas/UrlRemote"},{"$ref":"#/components/schemas/CicdRemote"}],"discriminator":{"propertyName":"type","mapping":{"GIT":"#/components/schemas/GitRemote","URL":"#/components/schemas/UrlRemote","CICD":"#/components/schemas/CicdRemote"}}},"RemoteList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Remote"}}},"required":["object","page","data"]}},"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","description":"API key is required to access API.\nCreate an API key by visiting [Platform](https://app.cloud.redocly.com/) and navigating to **Access** > **API Keys** page."}},"responses":{"BadRequestError":{"description":"Bad Request.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"InternalServerError":{"description":"Internal Server Error.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"UnauthorizedError":{"description":"User is not authorized to access this resource.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"ForbiddenError":{"description":"Forbidden.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NotFoundError":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NoContent":{"description":"No Content."},"TooManyRequestsError":{"description":"Too Many Requests.\n\nThe organization exceeded the rate limit for this operation.\nThe `Retry-After` header gives the number of seconds to wait before the next request.","headers":{"Retry-After":{"description":"Number of seconds to wait before sending another request.","schema":{"type":"integer","minimum":1},"example":30}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PaymentRequiredError":{"description":"Payment Required.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"parameters":{"OrgId":{"name":"orgId","description":"Organization ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `org_`."},"example":"org_01h1s5z6vf2mm1mz3hevnn9va7"},"After":{"name":"after","in":"query","required":false,"description":"Cursor of the next page.\n`page.nextPage` contains it as the `after` query parameter, so you can also request `page.nextPage` directly.\nThe cursor is opaque, and its internal structure is subject to change.","schema":{"type":"string"},"example":"a25fgaksjf23la=="},"Before":{"name":"before","in":"query","required":false,"description":"Cursor of the previous page.\n`page.previousPage` contains it as the `before` query parameter, so you can also request `page.previousPage` directly.\nThe cursor is opaque, and its internal structure is subject to change.","schema":{"type":"string"},"example":"bfg23aksjf23zb1=="},"Limit":{"name":"limit","description":"Use to return a number of results per page.\nIf there is more data, use in combination with `after` to page through the data.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":10},"Filter":{"name":"filter","description":"Filters the collection items. This field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results).","in":"query","required":false,"schema":{"type":"string"},"example":"status:approved createdAt:30d"},"Sort":{"name":"sort","description":"To sort by ID in descending order use `-id`.\nTo sort by ID in ascending order use `id`.","in":"query","required":false,"schema":{"type":"string","default":"-id"},"example":"-id"},"Search":{"name":"search","in":"query","description":"Search.","required":false,"schema":{"type":"string"},"example":"text-to-search"},"ProjectId":{"name":"projectId","description":"Project ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `prj_`."},"example":"prj_01hh1t9sa6gwfv5naz04gr7ehm"},"ExportJobId":{"name":"exportJobId","description":"Export Job ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `exp_`."},"example":"exp_01h1s5z6vf2mm1mz3hevnn9va7"},"FeedbackId":{"name":"feedbackId","description":"Feedback ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `fb_`."},"example":"fb_01h1s5z6vf2mm1mz3hevnn9va7"},"SourceId":{"name":"sourceId","description":"Project source ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `rem_`."},"example":"rem_01h1s5z6vf2mm1mz3hevnn9va7"},"PushId":{"name":"pushId","description":"Push ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `push_`."},"example":"push_01hhh91dhc2kg9naf476y7qmas"},"RemoteId":{"name":"remoteId","description":"Remote ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `rem_`."},"example":"rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"operationId":"getAuditLogExportJob","operationSource":{"kind":"code-sample","operationType":"http","method":"GET","path":"/orgs/{orgId}/audit-log-export-jobs/{exportJobId}","servers":[{"url":"/_mock/docs/platform/customization/reunite-api/openapi","description":"Mock server","isMockServer":true},{"url":"https://app.cloud.redocly.com/api","description":"Production main server."},{"url":"https://app.cloud.eu.redocly.com/api","description":"Production EU server."}],"parameters":{"path":[{"name":"orgId","in":"path","required":true,"example":"org_01h1s5z6vf2mm1mz3hevnn9va7","schemaId":"schema_0"},{"name":"exportJobId","in":"path","required":true,"example":"exp_01h1s5z6vf2mm1mz3hevnn9va7","schemaId":"schema_1"}],"query":[],"querystring":[],"header":[{"name":"x-redocly-client","in":"header","required":false,"example":"reunite-ui/0.92.1","schemaId":"schema_2"}],"cookie":[]},"security":[{"schemes":[{"id":"ApiKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","401","403","404","429","500"],"pointer":"/orgs/{orgId}/audit-log-export-jobs/{exportJobId}","openApiOperationId":"getAuditLogExportJob","summary":"Retrieve an audit log export job"},"options":{"excludeFromSearch":true,"mockServer":{"url":"/_mock/docs/platform/customization/reunite-api/openapi","position":"first","description":"Mock server"}},"pointer":"/paths/~1orgs~1{orgId}~1audit-log-export-jobs~1{exportJobId}/get"}},"children":[]}]},{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":2,"isLast":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," field in the response, which returns one of three values:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IN_PROGRESS"]},": the export is still running."," ","Send the request again in a few seconds."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COMPLETED"]},": the file is ready to download."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]},": the export did not finish."," ","Start a new job, and contact support if the failure repeats."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"download-the-export-file","__idx":6},"children":["Download the export file"]},{"$$mdtype":"Tag","name":"NumberedList","attributes":{"type":"number","size":"small"},"children":[{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":1,"isLast":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the status is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COMPLETED"]},", send the request to download the file."]},{"$$mdtype":"Tag","name":"ReplayOpenApi","attributes":{"descriptionFile":"../customization/reunite-api/openapi.yaml","operationId":"getAuditLogExportResult","parameters":{},"options":{},"environments":{},"replayResolved":{"apiStore":{"schemaStore":{"components/schemas/Problem":{"id":"components/schemas/Problem","kind":"json-schema","title":"Problem","data":{"type":"object","title":"Problem","properties":{"type":{"type":"string","format":"uri-reference","description":"URI reference that uniquely identifies the problem type only in the context of the provided API.\nOpposed to the specification in RFC 9457 (formerly RFC 7807), it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.\n","default":"about:blank","example":"/some/uri-reference"},"title":{"type":"string","description":"Short summary of the problem type.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some title for the error situation"},"status":{"type":"integer","format":"int32","description":"HTTP status code generated by the origin server for this occurrence of the problem.\n","minimum":100,"exclusiveMaximum":600,"example":400},"detail":{"type":"string","description":"Human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some description for the error situation"},"instance":{"type":"string","format":"uri-reference","description":"URI reference that identifies the specific occurrence of the problem. For example, by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code.\n","example":"/some/uri-reference#specific-occurrence-context"},"object":{"type":"string","enum":["problem"]},"requestId":{"type":"string","description":"Unique identifier of the request that produced this problem.\nShare it with support when reporting the error.\n","example":"req-abc-123"},"code":{"type":"string","description":"Machine-readable identifier of the problem, stable across wording changes of `title` and `detail`.\nPresent only for problems a client is expected to branch on; such a problem explains the occurrence in `detail`.\n","example":"usageLimitExceeded"},"reason":{"type":"string","description":"Machine-readable refinement of `code` that names which rule produced the problem.\n","example":"MAX_ACTIVE_RUNS_PER_ORGANIZATION_REACHED"},"errors":{"type":"array","description":"Additional information about the error situation.\nMay be omitted if no additional information is available.\n"}},"required":["type","title","status","object"]}},"components/schemas/Page":{"id":"components/schemas/Page","kind":"json-schema","title":"Page","data":{"type":"object","properties":{"nextPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the next page, relative to the API server URL.\nAppend the value to the server URL to get the next page.\nThe path keeps the query parameters of the request and sets `after` to the cursor of the next page.\nWhen `null`, there is no next page.","example":"/orgs/org_123/projects?limit=10&after=a25fgaksjf23la=="},"previousPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the previous page, relative to the API server URL.\nAppend the value to the server URL to get the previous page.\nThe path keeps the query parameters of the request and sets `before` to the cursor of the previous page.\nWhen `null`, there is no previous page.","example":"/orgs/org_123/projects?limit=10&before=bfg23aksjf23zb1=="},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Value showing how many items are in the page limit."}},"required":["nextPage","previousPage","limit"]}},"components/schemas/AuditLogExportJobCreated":{"id":"components/schemas/AuditLogExportJobCreated","kind":"json-schema","title":"AuditLogExportJobCreated","data":{"type":"object","description":"Details of the created audit log export job.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","createdAt"]}},"components/schemas/AuditLogExportStatus":{"id":"components/schemas/AuditLogExportStatus","kind":"json-schema","title":"AuditLogExportStatus","data":{"type":"string","description":"Current status of the export job.","enum":["IN_PROGRESS","COMPLETED","FAILED"]}},"components/schemas/AuditLogExportJob":{"id":"components/schemas/AuditLogExportJob","kind":"json-schema","title":"AuditLogExportJob","data":{"type":"object","description":"Audit log export job status and metadata.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"status":{"$ref":"#/components/schemas/AuditLogExportStatus"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","status","createdAt"]}},"components/schemas/AuditLogEventType":{"id":"components/schemas/AuditLogEventType","kind":"json-schema","title":"AuditLogEventType","data":{"type":"string","description":"CloudEvent `type` value emitted for an audit-loggable action.\nOnly events whose `type` is in this list are returned by the audit log export endpoints.","enum":["com.redocly.apiKey.created","com.redocly.apiKey.updated","com.redocly.apiKey.revoked","com.redocly.gitIdentity.linked","com.redocly.gitIdentity.unlinked","com.redocly.gitIdentity.removed","com.redocly.scimCredential.created","com.redocly.scimCredential.revoked","com.redocly.invite.created","com.redocly.invite.resent","com.redocly.userInvite.accepted","com.redocly.membership.created","com.redocly.membership.updated","com.redocly.membership.removed","com.redocly.team.created","com.redocly.team.deleted","com.redocly.teamMember.added","com.redocly.teamMember.removed","com.redocly.syncedTeamMember.added","com.redocly.syncedTeamMember.removed","com.redocly.teamManager.added","com.redocly.teamManager.removed","com.redocly.organization.created","com.redocly.organization.updated","com.redocly.organization.slugUpdated","com.redocly.organization.removed","com.redocly.project.created","com.redocly.project.updated","com.redocly.project.slugUpdated","com.redocly.project.urlUpdated","com.redocly.project.removed","com.redocly.projectConfig.updated","com.redocly.projectCustomDomain.verified","com.redocly.projectCustomDomain.removed","com.redocly.branch.created","com.redocly.branch.updated","com.redocly.branch.removed","com.redocly.gitAccess.pushed","com.redocly.remote.created","com.redocly.remote.deleted","com.redocly.gitCredential.rotated","com.redocly.notificationSettings.updated","com.redocly.notifications.disabled","com.redocly.subscription.updated","com.redocly.subscription.churned","com.redocly.subscription.reactivated","com.redocly.subscription.trialEnded","com.redocly.pullRequest.created","com.redocly.pullRequest.closed","com.redocly.pullRequest.reopened","com.redocly.pullRequest.merged","com.redocly.pullRequest.approved","com.redocly.pullRequest.requestedChanges","com.redocly.pullRequest.reviewRequested","com.redocly.pullRequest.readyForReview","com.redocly.pullRequest.markedAsDraft","com.redocly.pullRequest.commented","com.redocly.pullRequest.commitPushed","com.redocly.pullRequest.forcePushed","com.redocly.pullRequest.visualReviewUpdated"],"example":"com.redocly.pullRequest.created"}},"components/schemas/id":{"id":"components/schemas/id","kind":"json-schema","title":"id","data":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true}},"components/schemas/slug":{"id":"components/schemas/slug","kind":"json-schema","title":"slug","data":{"description":"Project slug.","type":"string","example":"project_red-owl-352"}},"components/schemas/AuditLogExportEvent":{"id":"components/schemas/AuditLogExportEvent","kind":"json-schema","title":"AuditLogExportEvent","data":{"type":"object","description":"One audit log export record.","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique event identifier.","example":"evt_2fxb8r4kq7m3ndp9z6ja501"},"object":{"type":"string","description":"Entity name.","enum":["event"],"readOnly":true},"type":{"$ref":"#/components/schemas/AuditLogEventType"},"time":{"type":"string","format":"date-time","description":"Event timestamp (ISO 8601).","example":"2026-04-15T14:43:08.172Z"},"subject":{"type":"string","description":"Subject URI or resource ID the event refers to.","example":"pr_7wnk3jm9xp2d4rv8qh5a01"},"projectId":{"$ref":"#/components/schemas/id"},"projectSlug":{"$ref":"#/components/schemas/slug"},"clientIp":{"type":"string","description":"IP address of the client that triggered the event.","example":"198.51.100.42"},"actor":{"oneOf":[{"type":"null"},{"type":"object","description":"Actor that triggered the event.","properties":{"id":{"type":"string","pattern":"^(usr|gid|wh|cj)_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01h2r5f6qy8kr42p8yfw52spq6"},"object":{"type":"string","enum":["user","gitIdentity","webhook","cronJob"],"example":"user"},"uri":{"type":"string","format":"uri","example":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"}},"required":["id","object","uri"],"additionalProperties":false}]}},"additionalProperties":false}},"components/schemas/CredentialType":{"id":"components/schemas/CredentialType","kind":"json-schema","title":"CredentialType","data":{"type":"string","format":"enum","description":"Credential type.","enum":["GITHUB_USER","GITLAB_USER","BITBUCKET_USER","AZURE_USER","URL","GITHUB_CLOUD_APP_INSTALLATION","GITHUB_SERVER_APP_INSTALLATION","GITHUB_SERVER_APP","GITLAB_SELF_MANAGED_APP","GITHUB_CLOUD_INTERNAL_APP_INSTALLATION","MCP_HEADERS","MCP_BEARER","MCP_API_KEY","SUPPORT_DESK"]}},"components/schemas/AuthType":{"id":"components/schemas/AuthType","kind":"json-schema","title":"AuthType","data":{"type":"string","format":"enum","description":"Credential auth type.","enum":["BASIC","PERSONAL_ACCESS_TOKEN","PERSONAL_ACCESS_TOKEN_FOR_ORGANIZATION","PROJECT_ACCESS_TOKEN","INSTALLATION_ACCESS_TOKEN","OAUTH2","BEARER","API_KEY"]}},"components/schemas/GitHubInstallationPublicCredential":{"id":"components/schemas/GitHubInstallationPublicCredential","kind":"json-schema","title":"GitHubInstallationPublicCredential","data":{"title":"GitHubInstallationPublicCredential","type":"object","properties":{"installationId":{"type":"number"},"namespaceId":{"type":"string"},"repositoryId":{"type":"string"}},"required":["namespaceId","repositoryId"]}},"components/schemas/GitHubEEServerAppPublicCredential":{"id":"components/schemas/GitHubEEServerAppPublicCredential","kind":"json-schema","title":"GitHubEEServerAppPublicCredential","data":{"title":"GitHubEEServerAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"clientId":{"type":"string"},"url":{"type":"string"},"apiUrl":{"type":"string"},"appName":{"type":"string"}},"required":["appId","clientId","url"]}},"components/schemas/GitLabSelfManagedAppPublicCredential":{"id":"components/schemas/GitLabSelfManagedAppPublicCredential","kind":"json-schema","title":"GitLabSelfManagedAppPublicCredential","data":{"title":"GitLabSelfManagedAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"url":{"type":"string"}},"required":["appId","url"]}},"components/schemas/AzureDevOpsUserPATPublicCredential":{"id":"components/schemas/AzureDevOpsUserPATPublicCredential","kind":"json-schema","title":"AzureDevOpsUserPATPublicCredential","data":{"title":"AzureDevOpsUserPATPublicCredential","type":"object","properties":{"organizationName":{"type":"string"}},"required":["organizationName"]}},"components/schemas/BitbucketCloudUserProjectTokenPublicCredential":{"id":"components/schemas/BitbucketCloudUserProjectTokenPublicCredential","kind":"json-schema","title":"BitbucketCloudUserProjectTokenPublicCredential","data":{"title":"BitbucketCloudUserProjectTokenPublicCredential","type":"object","properties":{"workspace":{"type":"string","description":"This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example: {workspace UUID}."}},"required":["workspace"]}},"components/schemas/McpPublicCredential":{"id":"components/schemas/McpPublicCredential","kind":"json-schema","title":"McpPublicCredential","data":{"title":"McpPublicCredential","type":"object","description":"Non-secret part of the credential of an agent MCP server: the header that carries the API key, and the names of the secret headers besides the authentication header. Values live in the secret store.","properties":{"header":{"description":"Request header that carries the API key; absent for a bearer token.","type":"string","example":"X-Api-Key"},"secretHeaderNames":{"description":"Names of the secret headers besides the authentication header.","type":"array","items":{"type":"string"},"example":["X-Tenant"]}},"required":["secretHeaderNames"]}},"components/schemas/CredentialSchemaBase":{"id":"components/schemas/CredentialSchemaBase","kind":"json-schema","title":"CredentialsSchemaBase","data":{"title":"CredentialsSchemaBase","type":"object","properties":{"id":{"description":"Credential ID. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["credential"],"readOnly":true},"uri":{"description":"Canonical URI for the credential resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/credentials/cred_01h1s5z6vf2mm1mz3hevnn9va7"},"type":{"$ref":"#/components/schemas/CredentialType"},"authType":{"$ref":"#/components/schemas/AuthType"},"name":{"type":"string"},"description":{"type":"string"},"publicData":{"type":"object","description":"Credential public data.","oneOf":[{"$ref":"#/components/schemas/GitHubInstallationPublicCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppPublicCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppPublicCredential"},{"$ref":"#/components/schemas/AzureDevOpsUserPATPublicCredential"},{"$ref":"#/components/schemas/BitbucketCloudUserProjectTokenPublicCredential"},{"$ref":"#/components/schemas/McpPublicCredential"}]},"oAuth2Data":{"type":"object","description":"Credential OAuth2 data.","readOnly":true,"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"OAuth2 ID. Unique identifier of OAuth2 account.","example":"4acc1f09-1751-6f79-b156-b6877ee205a2"},"userName":{"type":"string","description":"OAuth2 user name.","example":"john-doe"},"displayName":{"type":"string","description":"OAuth2 display name.","example":"John Doe"},"email":{"type":"string","description":"OAuth2 email.","example":"john-doe@mail.com"},"avatarUrl":{"type":"string","description":"OAuth2 avatar URL.","example":"https://avatars.githubusercontent.com/u/1?v=4"}},"required":["id","userName","displayName"]},"userId":{"description":"User ID this credentials belongs to. Unique identifier prefixed with `usr_`.","type":"string","pattern":"^usr_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"isShared":{"type":"boolean","default":false},"isBroken":{"type":"boolean","default":false,"readOnly":true},"parentId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Credential parent ID. Unique identifier prefixed with `cred_`.","example":"cred_01h4e71x94vd68a1farnbfapzg"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","object","uri","type","createdAt","updatedAt"]}},"components/schemas/AccessTokenCredential":{"id":"components/schemas/AccessTokenCredential","kind":"json-schema","title":"AccessTokenCredential","data":{"title":"AccessTokenCredential","type":"object","writeOnly":true,"properties":{"accessToken":{"type":"string"}},"required":["accessToken"]}},"components/schemas/OAuth2CodeCredential":{"id":"components/schemas/OAuth2CodeCredential","kind":"json-schema","title":"OAuth2CodeCredential","data":{"title":"OAuth2CodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"OAuth code to be used to get access/refresh tokens.","type":"string","example":"Yzk5ZDczMzRlNDEwY"}},"required":["code"]}},"components/schemas/GithubAppCodeCredential":{"id":"components/schemas/GithubAppCodeCredential","kind":"json-schema","title":"GithubAppCodeCredential","data":{"title":"GithubAppCodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"GithubApp code to be used to get exchange code on App secrets.","type":"string","example":"Yzk5ZDczMzRlNDEwY"},"url":{"description":"GithubApp url to be used to get exchange code on App secrets.","type":"string","example":"https://github.app.com"}},"required":["code","url"]}},"components/schemas/GitLabSelfManagedAppSecretCredential":{"id":"components/schemas/GitLabSelfManagedAppSecretCredential","kind":"json-schema","title":"GitLabSelfManagedAppSecretCredential","data":{"title":"GitLabSelfManagedAppSecretCredential","type":"object","writeOnly":true,"properties":{"appSecret":{"type":"string"},"webhookSecret":{"type":"string"}},"required":["appSecret"]}},"components/schemas/GitHubEEServerAppSecretCredential":{"id":"components/schemas/GitHubEEServerAppSecretCredential","kind":"json-schema","title":"GitHubEEServerAppSecretCredential","data":{"title":"GitHubEEServerAppSecretCredential","type":"object","writeOnly":true,"properties":{"clientSecret":{"type":"string"},"privateKey":{"type":"string"},"webhookSecret":{"type":"string"}}}},"components/schemas/CredentialSchema":{"id":"components/schemas/CredentialSchema","kind":"json-schema","title":"Credential","data":{"title":"Credential","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchemaBase"},{"type":"object","properties":{"secretData":{"type":"object","description":"Credential secret data.","writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/AccessTokenCredential"},{"$ref":"#/components/schemas/OAuth2CodeCredential"},{"$ref":"#/components/schemas/GithubAppCodeCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppSecretCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppSecretCredential"}]}}}]}},"components/schemas/CredentialPatchResponse":{"id":"components/schemas/CredentialPatchResponse","kind":"json-schema","title":"CredentialPatchResponse","data":{"title":"CredentialPatchResponse","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchema"},{"type":"object","properties":{"warnings":{"type":"array","description":"Problems that do not block the update.\nFor example, Reunite cannot set up a webhook for a repository that uses this credential.\n","readOnly":true,"items":{"type":"string","example":"Failed to set up webhook for repository \"fe5d7747-af71-449a-951b-f781f54603af\": Azure DevOps token does not have sufficient permissions. Please check token scopes."}}},"required":["warnings"]}]}},"components/schemas/CreateCredentialRotationRequest":{"id":"components/schemas/CreateCredentialRotationRequest","kind":"json-schema","title":"CreateCredentialRotationRequest","data":{"title":"CreateCredentialRotationRequest","type":"object","properties":{"credentialId":{"description":"ID of the credential whose access token is replaced. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7"},"secretData":{"description":"New access token for the credential.","$ref":"#/components/schemas/AccessTokenCredential"}},"required":["credentialId","secretData"]}},"components/schemas/Feedback":{"id":"components/schemas/Feedback","kind":"json-schema","title":"Feedback","data":{"type":"object","title":"Feedback","additionalProperties":false,"properties":{"id":{"description":"Feedback ID. Unique identifier prefixed with `fb_`.","type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"fb_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["feedback"],"readOnly":true},"uri":{"description":"Canonical URI for the feedback resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/feedback/fb_01h1s5z6vf2mm1mz3hevnn9va7"},"email":{"type":["string","null"],"format":"email","maxLength":254,"description":"Email address of user who submitted the feedback or `null`."},"path":{"type":"string","minLength":1,"maxLength":1000,"description":"Absolute URL of the page where feedback is submitted (for example from the browser location). A value that is not a valid URL is accepted, but the feedback is marked as spam.","example":"https://example.com/docs/guide"},"location":{"type":["string","null"],"maxLength":5000,"description":"Identifies the location of the component.\nThis could be a code sample."},"lang":{"type":"string","maxLength":20,"description":"Identifies the language of the component's location.\nThis could be the language of a code sample, such as `js`, `php`, or `txt`."},"feedbackComponent":{"type":"string","description":"Name that identifies UI component.","enum":["SENTIMENT","RATING","COMMENT","MOOD","PROBLEM","SCALE"]},"score":{"description":"Numeric value that maps to the feedback component, such as thumbs down (-1) or thumbs up (1), or a 1-5 star rating scale.","type":["integer","null"],"minimum":-1,"maximum":10},"maxScore":{"description":"Maximum score for the feedback component.","type":["integer","null"],"minimum":0,"maximum":10},"reasons":{"type":"array","description":"List of preset reasons for feedback.","items":{"type":"string","maxLength":5000,"description":"Reason for feedback."}},"comment":{"type":"string","maxLength":5000,"description":"Free-form text feedback."},"agent":{"type":["string","null"],"maxLength":200,"description":"Name of the AI agent that submitted the feedback, or `null` for user-submitted feedback.","example":"Cursor"},"targetFeature":{"type":["string","null"],"maxLength":500,"description":"Documentation feature the feedback refers to (for agent submissions), or `null` for user-submitted feedback.","example":"Respect Monitoring API"},"origin":{"type":"string","description":"Origin of the feedback. `FORM` is the feedback form on the page, `API` is a direct API call (for example an agent that follows `llms.txt` instructions), and `MCP` is the MCP server `submit-feedback` tool. When omitted on create, defaults to `API` if `agent` is set and to `FORM` otherwise.","enum":["FORM","API","MCP"],"example":"MCP"},"metadata":{"type":"object","description":"Extra tracking fields. The server sets `userAgent`, `ipAddress`, `platform`, and `email` (read-only). `id`, `firstName`, `lastName`, and `auth_time` pass through if present but are not verified; do not use for access or identity. Any other key is stored with its value redacted to a placeholder.","properties":{"userAgent":{"type":"string","description":"User agent string of the browser that submitted the feedback. Populated by the server from the `User-Agent` header.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","readOnly":true},"ipAddress":{"type":"string","description":"IP address of the user who submitted the feedback. Populated by the server.","example":"127.0.0.1","readOnly":true},"platform":{"type":"string","description":"Platform from which the feedback originates. Populated by the server from the `Sec-Ch-Ua-Platform` header.","example":"Windows NT 10.0; Win64; x64","readOnly":true},"email":{"type":"string","format":"email","description":"Email address from the user's authentication context. Populated by the server from OIDC claims.","example":"john.doe@acme.com","readOnly":true},"id":{"type":"string","description":"Unverified; whatever the client sent. Not a trusted user ID."},"firstName":{"type":"string","description":"Unverified; client-supplied if present."},"lastName":{"type":"string","description":"Unverified; client-supplied if present."},"auth_time":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Unverified; client-supplied. Not a server-asserted session or token time."}},"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","readOnly":true},"organizationId":{"description":"Organization ID. Unique identifier prefixed with `org_`.","type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"org_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"projectId":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","readOnly":true},"internalCommentUpdatedAt":{"type":"string","format":"date-time","description":"Date and time when the internal comment is updated.","readOnly":true},"internalCommentUpdatedById":{"type":"string","description":"ID of the user who updated the internal comment.","readOnly":true}},"required":["id","uri","path","feedbackComponent","createdAt","object","organizationId","projectId","status","origin"]}},"components/schemas/FeedbackList":{"id":"components/schemas/FeedbackList","kind":"json-schema","title":"FeedbackList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Feedback"}}},"required":["object","page","data"]}},"components/schemas/PatchFeedbackRequest":{"id":"components/schemas/PatchFeedbackRequest","kind":"json-schema","title":"Feedback PATCH request","data":{"type":"object","title":"Feedback PATCH request","minProperties":1,"properties":{"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","writeOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","writeOnly":true}}}},"components/schemas/GitProviderType":{"id":"components/schemas/GitProviderType","kind":"json-schema","title":"GitProviderType","data":{"type":"string","format":"enum","description":"Git provider type.","enum":["GITHUB_CLOUD","GITHUB_SERVER","GITLAB_CLOUD","GITLAB_SELF_MANAGED","BITBUCKET_CLOUD","BITBUCKET_DATACENTER","AZURE_DEVOPS_SERVICES","AZURE_DEVOPS_SERVER"]}},"components/schemas/GitProvider":{"id":"components/schemas/GitProvider","kind":"json-schema","title":"GitProvider","data":{"type":"object","description":"Git provider configuration.","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/GitProviderType"},"name":{"type":"string","example":"Redocly GitLab"},"publicConfig":{"type":"object","properties":{"url":{"type":"string","example":"https://gitlab.redocly.dev"},"clientId":{"type":"string","example":"05489443ec38b38f2327cdde9d5f51f284ae1d726130b300ecda0a259010c759"},"appName":{"type":"string","example":"redocly"}}},"isCustom":{"type":"boolean","description":"Indicates whether this provider is a custom provider added to the organization."}},"required":["id","type","name","isCustom"]}},"components/schemas/ProjectSource":{"id":"components/schemas/ProjectSource","kind":"json-schema","title":"ProjectSource","data":{"type":"object","properties":{"id":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Project source ID. Unique identifier prefixed with `rem_`.","readOnly":true},"uri":{"description":"Canonical URI for the project source resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/sources/rem_01hc2rvwxf7jyj1er504khx8e7"},"branchName":{"description":"Main branch of the project.","type":"string","example":"main"},"contentPath":{"description":"Path to the project content in the repository.","type":"string","example":"/"},"repoName":{"description":"Name of the repository. Present when Reunite can access the repository.","type":"string","example":"Repo Name"},"repoUrl":{"description":"URL of the repository. Present when Reunite can access the repository.","type":"string","example":"https://github.com/example/example"},"isInternal":{"description":"Whether the project content is stored in the Reunite-hosted repository instead of an external Git repository. Internal sources have no Git provider fields and no credential.","type":"boolean","example":true},"isMonorepo":{"description":"Whether the project content is in a folder of the repository rather than at its root.","type":"boolean","example":true},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"providerConfig":{"$ref":"#/components/schemas/GitProvider","description":"Git provider of the repository."},"canAccessRepo":{"type":"boolean","example":true,"description":"Whether Reunite can access the repository with the source credential. `false` usually means that the access token is expired or revoked."},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\nAbsent for internal sources."},"sourceId":{"type":"string","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Use `id` instead.","deprecated":true},"namespaceId":{"type":["string","null"],"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","example":"azure-test-org"},"repositoryId":{"type":"string","description":"Git provider identifier of the repository.","example":"redocly-testing"},"branchDeployStrategy":{"type":"string","description":"Which branches other than the main branch start builds.","enum":["NONE","SELECTED","ALL"]},"selectedDeployBranches":{"type":"array","description":"Branches that start a build when they're updated or a pull request targets them.","items":{"type":"string"}},"prDeploysEnabled":{"type":"boolean","description":"Whether pull requests start builds when they target the main branch or, with the `SELECTED` strategy, a branch in `selectedDeployBranches`.\nHas no effect with the `ALL` strategy, which builds every branch."},"forksPrDeploysEnabled":{"type":"boolean","description":"Whether build starts for PRs from forks."},"visualReviewCheckDisabled":{"type":"boolean","default":false,"description":"Whether the Visual review check is disabled. A disabled check is reported as skipped instead of pending."},"createdAt":{"description":"Time when Reunite created the project source.","type":"string","format":"date-time","readOnly":true},"updatedAt":{"description":"Time of the last change to the project source.","type":"string","format":"date-time","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["projectSource"],"readOnly":true}},"required":["id","uri","branchName","contentPath","isInternal","isMonorepo","branchDeployStrategy","selectedDeployBranches","prDeploysEnabled","forksPrDeploysEnabled","visualReviewCheckDisabled","createdAt","updatedAt","object"]}},"components/schemas/ProjectSourceList":{"id":"components/schemas/ProjectSourceList","kind":"json-schema","title":"ProjectSourceList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/ProjectSource"}}},"required":["object","page","data"]}},"components/schemas/MountPath":{"id":"components/schemas/MountPath","kind":"json-schema","title":"MountPath","data":{"type":"string","description":"Path to the folder in the local repository where remote content is mounted. Paths outside of the project's `contentPath` are not allowed.","example":"apis/test/@v1"}},"components/schemas/AutoSync":{"id":"components/schemas/AutoSync","kind":"json-schema","title":"AutoSync","data":{"type":"boolean","default":true,"description":"Whether Reunite syncs changes from the remote automatically."}},"components/schemas/AutoSyncDisabledAt":{"id":"components/schemas/AutoSyncDisabledAt","kind":"json-schema","title":"AutoSyncDisabledAt","data":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Time when Reunite turned off auto-sync after repeated failed updates.\n`null` when auto-sync is on or a user turned it off.","example":"2021-08-25T10:00:00.000Z"}},"components/schemas/AutoMerge":{"id":"components/schemas/AutoMerge","kind":"json-schema","title":"AutoMerge","data":{"type":"boolean","default":false,"description":"Auto merge changes from remote."}},"components/schemas/MountBranchName":{"id":"components/schemas/MountBranchName","kind":"json-schema","title":"MountBranchName","data":{"type":"string","description":"Name of the branch to mount.","example":"main"}},"components/schemas/GenericRemoteError":{"id":"components/schemas/GenericRemoteError","kind":"json-schema","title":"GenericRemoteError","data":{"oneOf":[{"type":"null"},{"type":"object","properties":{"autoMerge":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the auto merge failure."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the error."},"buildId":{"type":"string","description":"ID of the build that triggered the auto merge."}},"required":["message","timestamp"]}},"required":["autoMerge"]}],"readOnly":true}},"components/schemas/LastSyncedAt":{"id":"components/schemas/LastSyncedAt","kind":"json-schema","title":"LastSyncedAt","data":{"type":["string","null"],"format":"date-time","description":"Last time remote processed the default branch update.\n`null` when the remote has never been synced.\nFor URL remotes it is updated on interval specified for the remote.","example":"2021-08-25T10:00:00.000Z"}},"components/schemas/SyncAttempts":{"id":"components/schemas/SyncAttempts","kind":"json-schema","title":"SyncAttempts","data":{"type":"integer","description":"Number of failed attempts to sync the remote. If this value exceeds **6**, automatic synchronization is disabled.","example":1}},"components/schemas/UrlRemote":{"id":"components/schemas/UrlRemote","kind":"json-schema","title":"UrlRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","contentType","url","fileName","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"URL"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"string","enum":["FOLDER","FILE"]},"url":{"description":"URL to the remote content.","type":"string","example":"https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml"},"interval":{"type":"number","description":"Interval in seconds to sync URL remote content.","minimum":900,"default":1800,"example":900},"fileName":{"type":"string","description":"File name of the remote content.","example":"openapi.yaml"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"lastFinishedUrlUpdateId":{"type":["string","null"],"description":"ID of the last finished URL update.","example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"uri":{"type":"string","format":"uri","description":"Canonical URI for the URL remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"components/schemas/CicdRemote":{"id":"components/schemas/CicdRemote","kind":"json-schema","title":"CicdRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"CICD"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"null","readOnly":true},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"type":"string","format":"uri","description":"Canonical URI for the CICD remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"components/schemas/PushProjectBuildStatus":{"id":"components/schemas/PushProjectBuildStatus","kind":"json-schema","title":"PushProjectBuildStatus","data":{"type":"object","required":["deploy","scorecard"],"properties":{"deploy":{"type":"object","properties":{"url":{"type":["string","null"],"description":"Deployment URL."},"status":{"type":"string","description":"Status of project deployment.","enum":["pending","running","success","failed","skipped"],"example":"running"}},"required":["status","url"]},"scorecard":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Scorecard name.","example":"Scorecard: Compliance API"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Scorecard status description."},"url":{"type":"string","description":"Scorecard URL."}},"required":["name","status","description","url"]}}}}},"components/schemas/Push":{"id":"components/schemas/Push","kind":"json-schema","title":"Push","data":{"type":"object","required":["id","remoteIds","commit","uploadedFiles","isOutdated","hasChanges","status"],"properties":{"id":{"description":"Push ID. Unique identifier prefixed with `push_`.","type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"push_01h2captefvs9bpg3v6twqqj9n","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["push"],"readOnly":true},"remoteIds":{"type":"array","items":{"type":"string","description":"Remote IDs. Unique identifier prefixed with `rem_` for pushed remotes.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$"}},"remoteId":{"type":"string","description":"Remote ID. Unique identifier prefixed with `rem_` for pushed remotes. Used only for single remote push.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","deprecated":true},"commit":{"type":"object","required":["message","branchName","author"],"description":"Commit details.","properties":{"message":{"type":"string","description":"Commit message.","example":"chore: Add new API"},"branchName":{"type":"string","description":"Branch name.","example":"main"},"sha":{"type":["string","null"],"description":"SHA of the commit.","example":"f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"url":{"type":["string","null"],"format":"uri","description":"Commit URL.","example":"https://gitlab.com/example-user/example-project/-/commit/f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"createdAt":{"type":["string","null"],"format":"date-time","description":"Commit creation date.","example":"2020-01-01T00:00:00.000Z"},"namespaceId":{"type":["string","null"],"description":"Git namespace ID (organization login for GitHub).","example":"Redocly"},"repositoryId":{"type":["string","null"],"description":"Git repository ID.","example":"redoc"},"author":{"description":"Commit author details.","type":"object","required":["email","name"],"properties":{"name":{"description":"Commit author name.","example":"John Doe"},"email":{"type":"string","description":"Commit author email.","format":"email","example":"johndoe@example.com"},"image":{"type":["string","null"],"description":"Commit author image URL.\nIf not provided, the default image is used.\nIf the image is not accessible, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) can be used."}}},"statuses":{"type":"array","readOnly":true,"description":"List of commit statuses set by the platform to the commit that triggered push.","items":{"type":"object","properties":{"name":{"type":"string","description":"Commit status name.","example":"Scorecard: Compliance API (org-slug/project-slug/remote-mount-path (remote))"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Commit status description."},"url":{"type":["string","null"],"description":"Commit status URL."}},"required":["name","status","description","url"]}}}},"scoutJobId":{"type":["string","null"],"pattern":"^job_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"`PROCESS_GIT_REPO` job, if any. Required for Scout pushes. Unique identifier prefixed with `job_`.","example":"job_01h2captefvs9bpg3v6twqqj9n"},"scoutJobContext":{"type":"string","writeOnly":true,"description":"Context of the `PROCESS_GIT_REPO` job, if any.\nApplies to Scout pushes only.\nUsed as commit status context.","example":"Team A"},"replace":{"type":"boolean","description":"Whether to replace the existing files.\nIf provided, all files from the remote are removed and the new files are added.\nIf not provided, the existing files are kept and the new files are added, overwriting the existing files where they overlap.","example":true,"default":false},"files":{"type":"object","writeOnly":true,"description":"Map of files to upload.","additionalProperties":{"description":"Files to push.","type":"string","format":"binary"}},"uploadedFiles":{"type":"array","readOnly":true,"description":"List of pushed files.","items":{"type":"object","description":"Pushed file.","required":["path","mimeType"],"properties":{"path":{"type":"string","description":"File path.","example":"some-path/index.html"},"mimeType":{"type":"string","description":"File MIME type.","example":"text/html"}}}},"isMainBranch":{"type":"boolean","example":true,"description":"Is push provided to the main branch."},"isOutdated":{"type":"boolean","readOnly":true,"description":"Indicates whether the push is discarded.\nIn case several pushes are performed in a row, the one with most recent commit is applied only.\nAlways `false` when commit's `createdAt` is omitted.","example":false},"hasChanges":{"type":"boolean","readOnly":true,"description":"Indicates if pushed files have changes.","example":false},"status":{"type":"object","readOnly":true,"description":"Status of the corresponding preview and production builds.","required":["preview","production"],"properties":{"preview":{"$ref":"#/components/schemas/PushProjectBuildStatus"},"production":{"$ref":"#/components/schemas/PushProjectBuildStatus"}}}}}},"components/schemas/PushList":{"id":"components/schemas/PushList","kind":"json-schema","title":"PushList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Push"}}},"required":["object","page","data"]}},"components/schemas/GitRemote":{"id":"components/schemas/GitRemote","kind":"json-schema","title":"GitRemote","data":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","repositoryId","branchName","contentPath","contentType","providerType","credentialId","uri","object"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"GIT"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Time when a user last created or updated the remote.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"ID of the user who created the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"ID of the user who last created or updated the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"namespaceId":{"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","type":["string","null"]},"repositoryId":{"description":"Git provider identifier of the repository.","type":"string"},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"description":"Path to the connected folder in the remote repository.","type":"string"},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential."},"branchName":{"description":"Branch name in the remote repository.","type":"string","example":"dev"},"contentType":{"type":"string","enum":["FOLDER","FILE"],"example":"FILE"},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"description":"Canonical URI for the remote resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"},"lastFinishedGitUpdateId":{"type":["string","null"],"description":"ID of the last finished Git update.","readOnly":true,"example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh"},"errors":{"$ref":"#/components/schemas/GenericRemoteError"}}}},"components/schemas/Remote":{"id":"components/schemas/Remote","kind":"json-schema","title":"Remote","data":{"oneOf":[{"$ref":"#/components/schemas/GitRemote"},{"$ref":"#/components/schemas/UrlRemote"},{"$ref":"#/components/schemas/CicdRemote"}],"discriminator":{"propertyName":"type","mapping":{"GIT":"#/components/schemas/GitRemote","URL":"#/components/schemas/UrlRemote","CICD":"#/components/schemas/CicdRemote"}}}},"components/schemas/RemoteList":{"id":"components/schemas/RemoteList","kind":"json-schema","title":"RemoteList","data":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Remote"}}},"required":["object","page","data"]}},"schema_0":{"kind":"json-schema","data":{"type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `org_`."},"id":"schema_0"},"schema_1":{"kind":"json-schema","data":{"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `exp_`."},"id":"schema_1"},"schema_2":{"kind":"json-schema","data":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"id":"schema_2"}},"exampleStore":{},"securitySchemeStore":{"ApiKey":{"id":"ApiKey","type":"http","scheme":"bearer","description":{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","attributes":{},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"API key is required to access API."},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{},"children":[],"type":"softbreak","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":"Create an API key by visiting "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"href":"https://app.cloud.redocly.com/"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"Platform"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"link","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" and navigating to "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"Access"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"strong","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" > "},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","inline":true,"attributes":{"content":"API Keys"},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"strong","location":{"start":{"line":0},"end":{"line":2}}},{"$$mdtype":"Node","inline":true,"attributes":{"content":" page."},"children":[],"type":"text","location":{"start":{"line":0},"end":{"line":2}}}],"type":"inline","location":{"start":{"line":0},"end":{"line":2}}}],"type":"paragraph","location":{"start":{"line":0},"end":{"line":2}}}],"type":"document"}}},"specVersion":"3.1.0"},"definition":{"openapi":"3.1.0","info":{"description":"Redocly platform API is a REST API over HTTPS for accessing and managing Redocly platform resources.\n\nThe API supports the following use cases:\n\n- Automation of organization and project workflows\n- Integration with internal systems\n- Development of customer-facing integrations\n\nTechnical characteristics:\n\n- Resource-oriented URLs\n- JSON request and response bodies\n- Standard HTTP methods and status codes\n- Filtering and search on selected collection endpoints\n\nEndpoint availability depends on subscription plan, organization settings, and product rollout status.\nThe API description is the authoritative reference.\nOrganizations for which an endpoint is not enabled should contact support.\n\n## Authentication\n\nThe API uses API keys for authentication.\nAuthentication requirements are defined per operation in the API description.\n\nAPI keys are intended for server-to-server integration.\nAPI keys are created as described in [Manage API keys](https://redocly.com/docs/realm/reunite/organization/api-keys).\nThe key is transmitted as a Bearer token:\n\n```http\nAuthorization: Bearer <api_key>\n```\n\nKeys must meet the following requirements:\n\n- Stored in a secure secret management system (not in client-side application code)\n- Rotated on a regular basis\n- Revoked when no longer required\n- Limited to the minimum set of endpoints and environments necessary for the integration\n\nEvery operation states the authentication it accepts in its own `security` section.\nTypical responses include:\n\n- `401 Unauthorized` (missing, invalid, or expired credentials)\n- `403 Forbidden` (credentials are valid but insufficient for the requested action)\n\n## Pagination\n\nList endpoints implement cursor-based pagination.\nEach response includes a `page` object and the results in the `data` array.\n\nSupported query parameters:\n\n- `limit`: values from `1` to `100`, default `10`\n- `after` and `before`: cursor navigation\n- `sort`: for example `-id` or `id`\n\nThe `page` object contains:\n\n- `nextPage`: the path of the next page, or `null` when there is no next page\n- `previousPage`: the path of the previous page, or `null` when there is no previous page\n- `limit`\n\n`nextPage` and `previousPage` are paths relative to the API server URL.\nThey keep the query parameters of the request, such as `limit`, `filter`, and `sort`.\n`nextPage` sets `after` to the cursor of the next page, and `previousPage` sets `before` to the cursor of the previous page.\nTo get the adjacent page, append the value to the server URL as a string:\n\n```text\nhttps://app.cloud.redocly.com/api + /orgs/org_123/projects?limit=10&after=a25fgaksjf23la==\n= https://app.cloud.redocly.com/api/orgs/org_123/projects?limit=10&after=a25fgaksjf23la==\n```\n\nDo not resolve the value as a relative URL, for example with `new URL(nextPage, serverUrl)`.\nThe leading `/` replaces the `/api` path of the server URL.\n\nA typical sequence:\n\n1. Request the first page with `?limit=10`.\n2. Read `page.nextPage`.\n3. Request the server URL followed by `page.nextPage`.\n4. Continue until `nextPage` is `null`.\n\nThe cursors are opaque, and their internal structure is subject to change.\nTo build a request yourself, send the `after` value from `nextPage`, or the `before` value from `previousPage`, with your other query parameters.\n\n## Filter results\n\n**Filtering** uses the `?filter=` parameter with `field:value` syntax.\nThe supported forms include:\n\n- Exact match: `firstName:Casey`\n- Case-insensitive substring match: `firstName~jo`\n- Multiple values: `firstName:Casey,Jordan`, `status:success,pending`\n- Numeric or date-time ranges: `amount:1..10`, ISO 8601 date-times\n- Relative durations for date-time fields: `30d`, `2w`, `6mo`, `1y`, `all` (units: `s`, `m`, `h`, `d`, `w`, `mo`, `y`)\n- Nested fields: `team.user.email:casey.smith@acme-inc.com`\n- Negation: `-firstName:Casey`\n- Logical operators: `AND`, `OR`\n\nCombine multiple conditions by separating `field:value` pairs with a space.\nA space is treated as an implicit `AND`, so `firstName:Casey isAdmin:true` and `firstName:Casey AND isAdmin:true` are equivalent.\nUse `OR` to match alternatives.\n`AND` binds more tightly than `OR`, so `role:admin OR role:editor isActive:true` is evaluated as `role:admin OR (role:editor AND isActive:true)`.\nGrouping with parentheses is not supported.\n\nFor a single-valued field, comma-separated values and `OR` are equivalent: `role:admin,editor` matches the same records as `role:admin OR role:editor`.\nThey are not interchangeable when the field targets a to-many relation, when negation is applied (`-role:admin,editor` matches neither value, whereas `-role:admin OR -role:editor` matches every record), or when matching `null`.\n\nExplicit date-time values use ISO 8601.\nValues that contain spaces, commas, or `..` must be enclosed in quotation marks.\n`number`, `boolean`, and `null` values do not require quotation marks.\n\n```text\n?filter=firstName:Casey\n?filter=firstName~jo\n?filter=firstName:Casey,Jordan\n?filter=amount:1..10\n?filter=createdAt:30d\n?filter=team.user.email:casey.smith@acme-inc.com\n?filter=-firstName:Casey\n?filter=firstName:Casey isAdmin:true\n?filter=firstName:Casey AND isAdmin:true\n?filter=role:admin OR role:editor\n?filter=createdAt:2021-02-14T13:30:00.000Z\n?filter=description:\"The story called \\\"The Sky and the Sea.\\\"\"\n?search=casey\n```\n\n**Search** uses the `?search=` parameter where the operation supports it.\nIts behavior is defined per endpoint in the API description.\n\n## Errors\n\nError responses commonly use the `application/problem+json` media type.\nFields may include:\n\n- `type`\n- `title`\n- `status`\n- `detail` (optional)\n- `instance` (optional)\n- `object` (always `problem`)\n- `requestId` (optional)\n- `errors` (optional array)\n\nFrequently returned HTTP status codes:\n\n- `400`: validation failure or malformed input\n- `401`: authentication failure\n- `403`: authorization failure\n- `404`: resource not found\n- `409`: conflict with current state\n- `429`: rate limit exceeded\n- `500`: server error\n\nAdditional behavior:\n\n- Certain endpoints may return `402` when access depends on subscription plan or billing state.\n\nTroubleshooting:\n\n- Begin with the HTTP status code.\n- Review the `detail` and `errors` fields.\n\nInclude the following in support requests:\n\n- The complete response payload\n- Sufficient request context to reproduce the issue\n\n## Rate limits\n\nRate limiting preserves service stability and equitable usage.\n\nThe API description defines limits with the `x-rateLimit` extension.\nThese organization quotas apply to requests authenticated with an **API key** that belongs to your organization.\nExample properties:\n\n- `events` - the number of events allowed within the window\n- `window` - the length of the window, for example `1m`\n\nEnforcement:\n\n- For API keys, limits apply **per organization**: all API keys for the same organization share a single counter for a given limit.\n- Unauthenticated traffic to public endpoints does **not** consume these organization counters.\n  It is limited separately (for example by per-client protections at the edge).\n  This mechanism prevents anonymous callers from exhausting an organization's quota.\n- Limits may be defined per endpoint.\n- Limits may be overridden per organization or per endpoint.\n\nWhen a request exceeds the applicable limit, the API returns `429 Too Many Requests` and includes a `Retry-After` header with the number of seconds to wait before the next request.\n\nSend requests for increased throughput to `team@redocly.com` and include:\n\n- Organization ID\n- Affected endpoints\n- Expected request rate\n- Business justification\n","version":"1.0.1","title":"Redocly platform","termsOfService":"https://redocly.com/subscription-agreement","contact":{"name":"API Support","email":"team@redocly.com","url":"https://github.com/Redocly/redocly"},"license":{"name":"Redocly","url":"https://redocly.com/subscription-agreement"}},"servers":[{"url":"https://app.cloud.redocly.com/api","description":"Production main server."},{"url":"https://app.cloud.eu.redocly.com/api","description":"Production EU server."}],"tags":[{"name":"Audit log exports","description":"Export organization audit logs for compliance, analysis, or archival."},{"name":"Credentials","description":"Operations related to credentials."},{"name":"Feedback","description":"Operations related to feedback."},{"name":"Project sources","description":"Operations related to project sources."},{"name":"Pushes","description":"Operations related to pushes."},{"name":"Remotes","description":"Operations related to remotes."}],"paths":{"/orgs/{orgId}/audit-log-export-jobs":{"post":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"createAuditLogExportJob","summary":"Start an audit log export job","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nCreates an asynchronous audit log export job.\nPoll the job status endpoint until `status` is `COMPLETED`, then download from the export results endpoint.","x-rateLimit":{"events":60,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"name":"filter","in":"query","required":false,"description":"Standard list `filter` query. Supported fields for audit exports:\n- `type` — Event type.\n  When omitted, exports include events of all types.\n  Values must be valid audit log event types.\n  Unsupported values return `400`.\n\nFilter fields other than `type` are ignored.","schema":{"type":"string"},"example":"type:com.redocly.apiKey.created"},{"name":"start","in":"query","description":"Start of the time range in YYYY-MM-DD format. When `end` is omitted, exports include events from `start` through `start + 31 days`.","required":false,"example":"2026-01-01","schema":{"type":"string","format":"date"}},{"name":"end","in":"query","description":"End of the time range in YYYY-MM-DD format. When `start` is omitted, exports include events from `end - 31 days` through `end`. The time window between `start` and `end` must not exceed 31 days.","required":false,"example":"2026-01-31","schema":{"type":"string","format":"date"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","enum":["json","csv"],"default":"json"},"description":"Output file format for the generated download.","example":"json"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"201":{"description":"Export job created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogExportJobCreated"},"example":{"id":"exp_01hh1t9sa6gwfv5naz04gr7ehm","createdAt":"2024-01-15T12:00:00.000Z"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/audit-log-export-jobs/{exportJobId}":{"get":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"getAuditLogExportJob","summary":"Retrieve an audit log export job","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nRetrieve the status of an audit log export job.\nPoll this endpoint until `status` is `COMPLETED`, then download the file from the export results endpoint.","x-rateLimit":{"events":300,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ExportJobId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogExportJob"},"example":{"id":"exp_01hh1t9sa6gwfv5naz04gr7ehm","status":"COMPLETED","createdAt":"2024-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/audit-log-export-results/{exportJobId}":{"get":{"tags":["Audit log exports"],"security":[{"ApiKey":[]}],"operationId":"getAuditLogExportResult","summary":"Retrieve an audit log export file","description":"{% configOptionRequirements plans=[\"Enterprise+\"] /%}\n\nDownload the file generated by an audit log export job.\nThe file is available only after the export job completes.\nWhile the job status is `IN_PROGRESS` or `FAILED`, this endpoint returns `404`.","x-rateLimit":{"events":60,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ExportJobId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export file. Media type matches the `format` from the create-job request.","headers":{"Content-Disposition":{"description":"Attachment hint for browsers and HTTP clients. Suggested filename: `{exportJobId}.json` or `{exportJobId}.csv`.","schema":{"type":"string"},"example":"attachment; filename=\"exp_01hh1t9sa6gwfv5naz04gr7ehm.json\""}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogExportEvent"}},"example":[{"id":"evt_2fxb8r4kq7m3ndp9z6ja501","object":"event","type":"com.redocly.pullRequest.created","time":"2026-03-31T15:27:30.815Z","subject":"pr_7wnk3jm9xp2d4rv8qh5a01","actor":{"id":"usr_01h2r5f6qy8kr42p8yfw52spq6","object":"user","uri":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"},"clientIp":"198.51.100.42","projectId":"prj_01hh1t9sa6gwfv5naz04gr7ehm","projectSlug":"my-project"}]},"text/csv":{"schema":{"type":"string","format":"binary"},"example":"id,object,type,time,subject,actor,clientIp,projectId,projectSlug\nevt_2fxb8r4kq7m3ndp9z6ja501,event,com.redocly.pullRequest.created,2026-03-31T15:27:30.815Z,pr_7wnk3jm9xp2d4rv8qh5a01,\"{\"\"id\"\":\"\"usr_01h2r5f6qy8kr42p8yfw52spq6\"\",\"\"object\"\":\"\"user\"\",\"\"uri\"\":\"\"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6\"\"}\",198.51.100.42,prj_01hh1t9sa6gwfv5naz04gr7ehm,my-project\n"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/credential-rotations":{"post":{"tags":["Credentials"],"security":[{"ApiKey":[]}],"summary":"Create a credential rotation","description":"Replaces the access token of a shared GitLab, Azure DevOps, or Bitbucket token credential.\nReunite validates the new token with the Git provider before saving it.\nRotating any other credential type returns `400`.\n\nTo find the `credentialId`, list the sources or remotes of the project that uses the credential.\n\nOnly shared credentials can be rotated with an API key. Personal credentials return `404`.\nUse an API key with granular permissions that include `org.credentials.update`, or a legacy full access key.\nAPI keys with RBAC permissions return `403`.\n\nAfter saving the token, Reunite sets up webhooks again for the repositories that use the credential.\nRepositories where the webhook setup fails are listed in `warnings`.\n\nRequires `org.credentials.update` permission.","x-rateLimit":{"events":60,"window":"1m"},"operationId":"createCredentialRotation","parameters":[{"$ref":"#/components/parameters/OrgId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialRotationRequest"}}}},"responses":{"200":{"description":"Credential access token replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialPatchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback":{"get":{"tags":["Feedback"],"summary":"List all feedback","description":"List all feedback.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listFeedback","security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Sort","description":"Feedback list can be sorted by the following properties:\n  - `id`\n  - `createdAt`\n  - `path`\n  - `email`\n  - `score`\n  - `agent`\n  - `targetFeature`\n\nTo sort in descending order, prefix the field with `-` (for example `-createdAt`).\nTo sort in ascending order, use the field name without a prefix (for example `createdAt`).\n\nBy default, feedback list is sorted by `id` in descending order, which corresponds to the newest feedback first."},{"$ref":"#/components/parameters/Filter","description":"Filter feedback by:\n  - `createdAt`\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`\n  - `status` (one of `NEW`, `IN_REVIEW`, `RESOLVED`, `ARCHIVED`, `SPAM`)\n  - `feedbackComponent` (one of `SENTIMENT`, `RATING`, `COMMENT`, `MOOD`, `PROBLEM`, `SCALE`)\n  - `origin` (one of `FORM`, `API`, `MCP`)\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Search","description":"Search feedback by query string.\n\nFeedback is searched by:\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback/{feedbackId}":{"get":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Retrieve a feedback item","description":"Retrieve a feedback item.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":2000,"window":"1m"},"operationId":"getFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"patch":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Partially update a feedback item","description":"Partially update a feedback item.\n\nRequires `project.feedback.update` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"updateFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchFeedbackRequest"}}}},"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feedback"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"delete":{"tags":["Feedback"],"security":[{"ApiKey":[]}],"summary":"Delete a feedback item","description":"Delete a feedback item.\n\nRequires `project.feedback.delete` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"deleteFeedback","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/FeedbackId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"204":{"$ref":"#/components/responses/NoContent"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/feedback-export":{"get":{"tags":["Feedback"],"summary":"Export feedback report","description":"Download a feedback report as CSV or JSON file.\nResponse Content-Type is `text/csv` when `format=csv` and `application/json` when `format=json`.\n\nRequires `project.feedback.read` permission.","x-rateLimit":{"events":10,"window":"1m"},"operationId":"exportFeedbackReport","security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"name":"format","in":"query","required":false,"description":"Export file format. Defaults to `csv`.","schema":{"type":"string","enum":["csv","json"],"default":"csv"},"example":"csv"},{"$ref":"#/components/parameters/After","description":"Cursor from `page.nextPage` in a **List all feedback** response.\nThe export includes only the rows after this cursor."},{"$ref":"#/components/parameters/Before","description":"Cursor from `page.previousPage` in a **List all feedback** response.\nThe export includes only the rows before this cursor."},{"name":"limit","description":"Maximum number of feedback rows to include in the export (from the current sort order).\n\nWhen omitted, the export includes up to 1000 rows.\nRequest a larger export explicitly, up to the maximum.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"example":10000},{"$ref":"#/components/parameters/Sort","description":"Feedback report can be sorted by the following properties:\n  - `id`\n  - `createdAt`\n  - `path`\n  - `email`\n  - `score`\n  - `agent`\n  - `targetFeature`\n\nTo sort in descending order, prefix the field with `-` (for example `-createdAt`).\nTo sort in ascending order, use the field name without a prefix (for example `createdAt`).\n\nBy default, feedback report is sorted by `id` in descending order, which corresponds to the newest feedback first."},{"$ref":"#/components/parameters/Filter","description":"Filter feedback by:\n  - `createdAt`\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`\n  - `status` (one of `NEW`, `IN_REVIEW`, `RESOLVED`, `ARCHIVED`, `SPAM`)\n  - `feedbackComponent` (one of `SENTIMENT`, `RATING`, `COMMENT`, `MOOD`, `PROBLEM`, `SCALE`)\n  - `origin` (one of `FORM`, `API`, `MCP`)\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Search","description":"Search feedback by query string.\n\nFeedback is searched by:\n  - `email`\n  - `path`\n  - `location`\n  - `comment`\n  - `internalComment`\n  - `agent`\n  - `targetFeature`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"Export file.\nMedia type depends on the `format` query parameter.\n\nThe response is sent as a download: `Content-Disposition` is `attachment` with a generated filename unless the server chooses otherwise.\n\nDefault filename pattern: `feedback_export_{orgId}_{projectId}_{timestamp}.{format}`, where `{timestamp}` is milliseconds since the Unix epoch and `{format}` is either `csv` or `json`.","headers":{"Content-Disposition":{"description":"Attachment hint for browsers and HTTP clients.\nIncludes the suggested filename in the `filename` parameter (quoted).\n\nBy default the filename follows `feedback_export_{orgId}_{projectId}_{timestamp}.{format}`, using the same `orgId` and `projectId` as in the path and a millisecond timestamp.","schema":{"type":"string"},"example":"attachment; filename=\"feedback_export_org_01hh1t9sa6gwfv5naz04gr7ehm_prj_01hh1t9sa6gwfv5naz04gr7ehm_1715432100123.csv\""}},"content":{"text/csv":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/sources":{"get":{"tags":["Project sources"],"security":[{"ApiKey":[]}],"summary":"List all project sources","description":"Lists the source of the project.\nA project has exactly one source, so the list always holds one item.\nThe pagination parameters are accepted for consistency with other list operations.\nA source in an external Git repository includes the `credentialId` of the credential that Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\n\nRequires `org.project.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listProjectSources","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Limit"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSourceList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/sources/{sourceId}":{"get":{"tags":["Project sources"],"security":[{"ApiKey":[]}],"summary":"Retrieve a project source","description":"Retrieves the source of the project.\nA source in an external Git repository includes the `credentialId` of the credential that Reunite uses to access the repository.\n\nRequires `org.project.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"getProjectSourceById","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/SourceId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectSource"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/pushes":{"post":{"operationId":"push","summary":"Push files to remote","x-rateLimit":{"events":300,"window":"1m"},"security":[{"ApiKey":[]}],"description":"Push discovered files as a remote content.\nFiles should be sent as a `multipart/form-data`.\nCommit details like commit message and author can be sent as a JSON object in the `commit` field.\nThe complete multipart body must not exceed 500 MiB, including files, fields, and multipart overhead.\n\nRequires `project.remotes.update` permission.\nThe CLI `push` command creates or updates the remote before it pushes files, so it also requires `project.remotes.create`.","tags":["Pushes"],"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Push"}}}},"responses":{"201":{"description":"Content pushed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"413":{"description":"Push body exceeds 500 MiB.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"get":{"tags":["Pushes"],"security":[{"ApiKey":[]}],"summary":"List all pushes","description":"List all pushes.\n\nRequires `project.remotes.read` permission.","x-rateLimit":{"events":300,"window":"1m"},"operationId":"listPushes","parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Sort","description":"Push list can be sorted by `id` only.\n\nTo sort in descending order, use `-id`.\nTo sort in ascending order, use `id`.\n\nBy default, push list is sorted by `id` in descending order, which corresponds to the newest pushes first."},{"$ref":"#/components/parameters/Filter","description":"Filter pushes by:\n  - `id`\n  - `isMainBranch`\n  - `replace`\n  - `scoutJobId`\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Search","description":"Search pushes by query string.\n\nPushes are searched by:\n  - `id`\n  - `scoutJobId`\n  - `isMainBranch` and `replace`, only when the search term is exactly `true` or `false`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/pushes/{pushId}":{"get":{"security":[{"ApiKey":[]}],"tags":["Pushes"],"operationId":"getPush","summary":"Retrieve a push","description":"Retrieve a push.\n\nRequires `project.remotes.read` permission.","x-rateLimit":{"events":2000,"window":"1m"},"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/PushId"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Push"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/remotes":{"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"}],"get":{"operationId":"listRemotes","summary":"List all remotes","x-rateLimit":{"events":300,"window":"1m"},"security":[{"ApiKey":[]}],"description":"{% configOptionRequirements plans=[\"Scale\", \"Enterprise\"] /%}\n\nLists the remote content of the project.\nA Git remote includes the `credentialId` of the credential that Reunite uses to access its repository.\nUse it to rotate the access token of the credential.\n\nRequires `project.remotes.read` permission.","tags":["Remotes"],"parameters":[{"$ref":"#/components/parameters/After"},{"$ref":"#/components/parameters/Before"},{"$ref":"#/components/parameters/Sort","description":"Remote list can be sorted by `id` and `createdAt`.\n\nTo sort in descending order, prefix the field with `-`, for example `-createdAt`.\nTo sort in ascending order, use the field name, for example `createdAt`.\n\nBy default, remote list is sorted by `id` in descending order, which corresponds to the newest remotes first."},{"$ref":"#/components/parameters/Filter","description":"Filter remotes by:\n  - `id`\n  - `mountBranchName`\n  - `type`, one of `GIT`, `URL`, or `CICD`\n\nThis field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results)."},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Search","description":"Search remotes by query string.\n\nRemotes are searched by:\n  - `id`\n  - `mountPath`\n  - `mountBranchName`"},{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteList"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"402":{"$ref":"#/components/responses/PaymentRequiredError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/orgs/{orgId}/projects/{projectId}/remotes/{remoteId}":{"parameters":[{"$ref":"#/components/parameters/OrgId"},{"$ref":"#/components/parameters/ProjectId"},{"$ref":"#/components/parameters/RemoteId"}],"get":{"security":[{"ApiKey":[]}],"operationId":"getRemote","summary":"Retrieve a remote","x-rateLimit":{"events":2000,"window":"1m"},"description":"{% configOptionRequirements plans=[\"Scale\", \"Enterprise\"] /%}\n\nRetrieves a remote of the project.\nA Git remote includes the `credentialId` of the credential that Reunite uses to access its repository.\n\nRequires `project.remotes.read` permission.","tags":["Remotes"],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Remote"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"402":{"$ref":"#/components/responses/PaymentRequiredError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"429":{"$ref":"#/components/responses/TooManyRequestsError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"parameters":[{"name":"x-redocly-client","in":"header","required":false,"description":"Identifies the calling client as `<name>/<version>`, for example `reunite-ui/0.92.1`.\nUsed for API consumer observability.\nRequests without it are attributed as `unknown`.\n","schema":{"type":"string","pattern":"^[a-z0-9-]{1,64}/[\\w.+-]{1,32}$"},"example":"reunite-ui/0.92.1"}]}}},"components":{"schemas":{"Problem":{"type":"object","title":"Problem","properties":{"type":{"type":"string","format":"uri-reference","description":"URI reference that uniquely identifies the problem type only in the context of the provided API.\nOpposed to the specification in RFC 9457 (formerly RFC 7807), it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type.\n","default":"about:blank","example":"/some/uri-reference"},"title":{"type":"string","description":"Short summary of the problem type.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some title for the error situation"},"status":{"type":"integer","format":"int32","description":"HTTP status code generated by the origin server for this occurrence of the problem.\n","minimum":100,"exclusiveMaximum":600,"example":400},"detail":{"type":"string","description":"Human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed.\nWritten in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n","example":"some description for the error situation"},"instance":{"type":"string","format":"uri-reference","description":"URI reference that identifies the specific occurrence of the problem. For example, by adding a fragment identifier or sub-path to the problem type.\nMay be used to locate the root of this problem in the source code.\n","example":"/some/uri-reference#specific-occurrence-context"},"object":{"type":"string","enum":["problem"]},"requestId":{"type":"string","description":"Unique identifier of the request that produced this problem.\nShare it with support when reporting the error.\n","example":"req-abc-123"},"code":{"type":"string","description":"Machine-readable identifier of the problem, stable across wording changes of `title` and `detail`.\nPresent only for problems a client is expected to branch on; such a problem explains the occurrence in `detail`.\n","example":"usageLimitExceeded"},"reason":{"type":"string","description":"Machine-readable refinement of `code` that names which rule produced the problem.\n","example":"MAX_ACTIVE_RUNS_PER_ORGANIZATION_REACHED"},"errors":{"type":"array","description":"Additional information about the error situation.\nMay be omitted if no additional information is available.\n"}},"required":["type","title","status","object"]},"Page":{"type":"object","properties":{"nextPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the next page, relative to the API server URL.\nAppend the value to the server URL to get the next page.\nThe path keeps the query parameters of the request and sets `after` to the cursor of the next page.\nWhen `null`, there is no next page.","example":"/orgs/org_123/projects?limit=10&after=a25fgaksjf23la=="},"previousPage":{"type":["string","null"],"format":"uri-reference","description":"Path of the previous page, relative to the API server URL.\nAppend the value to the server URL to get the previous page.\nThe path keeps the query parameters of the request and sets `before` to the cursor of the previous page.\nWhen `null`, there is no previous page.","example":"/orgs/org_123/projects?limit=10&before=bfg23aksjf23zb1=="},"limit":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Value showing how many items are in the page limit."}},"required":["nextPage","previousPage","limit"]},"AuditLogExportJobCreated":{"type":"object","description":"Details of the created audit log export job.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","createdAt"]},"AuditLogExportStatus":{"type":"string","description":"Current status of the export job.","enum":["IN_PROGRESS","COMPLETED","FAILED"]},"AuditLogExportJob":{"type":"object","description":"Audit log export job status and metadata.","properties":{"id":{"readOnly":true,"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier for the export job, prefixed with `exp_`.","example":"exp_01hh1t9sa6gwfv5naz04gr7ehm"},"status":{"$ref":"#/components/schemas/AuditLogExportStatus"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Export job creation time (ISO 8601)."}},"required":["id","status","createdAt"]},"AuditLogEventType":{"type":"string","description":"CloudEvent `type` value emitted for an audit-loggable action.\nOnly events whose `type` is in this list are returned by the audit log export endpoints.","enum":["com.redocly.apiKey.created","com.redocly.apiKey.updated","com.redocly.apiKey.revoked","com.redocly.gitIdentity.linked","com.redocly.gitIdentity.unlinked","com.redocly.gitIdentity.removed","com.redocly.scimCredential.created","com.redocly.scimCredential.revoked","com.redocly.invite.created","com.redocly.invite.resent","com.redocly.userInvite.accepted","com.redocly.membership.created","com.redocly.membership.updated","com.redocly.membership.removed","com.redocly.team.created","com.redocly.team.deleted","com.redocly.teamMember.added","com.redocly.teamMember.removed","com.redocly.syncedTeamMember.added","com.redocly.syncedTeamMember.removed","com.redocly.teamManager.added","com.redocly.teamManager.removed","com.redocly.organization.created","com.redocly.organization.updated","com.redocly.organization.slugUpdated","com.redocly.organization.removed","com.redocly.project.created","com.redocly.project.updated","com.redocly.project.slugUpdated","com.redocly.project.urlUpdated","com.redocly.project.removed","com.redocly.projectConfig.updated","com.redocly.projectCustomDomain.verified","com.redocly.projectCustomDomain.removed","com.redocly.branch.created","com.redocly.branch.updated","com.redocly.branch.removed","com.redocly.gitAccess.pushed","com.redocly.remote.created","com.redocly.remote.deleted","com.redocly.gitCredential.rotated","com.redocly.notificationSettings.updated","com.redocly.notifications.disabled","com.redocly.subscription.updated","com.redocly.subscription.churned","com.redocly.subscription.reactivated","com.redocly.subscription.trialEnded","com.redocly.pullRequest.created","com.redocly.pullRequest.closed","com.redocly.pullRequest.reopened","com.redocly.pullRequest.merged","com.redocly.pullRequest.approved","com.redocly.pullRequest.requestedChanges","com.redocly.pullRequest.reviewRequested","com.redocly.pullRequest.readyForReview","com.redocly.pullRequest.markedAsDraft","com.redocly.pullRequest.commented","com.redocly.pullRequest.commitPushed","com.redocly.pullRequest.forcePushed","com.redocly.pullRequest.visualReviewUpdated"],"example":"com.redocly.pullRequest.created"},"id":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"slug":{"description":"Project slug.","type":"string","example":"project_red-owl-352"},"AuditLogExportEvent":{"type":"object","description":"One audit log export record.","required":["id","type"],"properties":{"id":{"type":"string","description":"Unique event identifier.","example":"evt_2fxb8r4kq7m3ndp9z6ja501"},"object":{"type":"string","description":"Entity name.","enum":["event"],"readOnly":true},"type":{"$ref":"#/components/schemas/AuditLogEventType"},"time":{"type":"string","format":"date-time","description":"Event timestamp (ISO 8601).","example":"2026-04-15T14:43:08.172Z"},"subject":{"type":"string","description":"Subject URI or resource ID the event refers to.","example":"pr_7wnk3jm9xp2d4rv8qh5a01"},"projectId":{"$ref":"#/components/schemas/id"},"projectSlug":{"$ref":"#/components/schemas/slug"},"clientIp":{"type":"string","description":"IP address of the client that triggered the event.","example":"198.51.100.42"},"actor":{"oneOf":[{"type":"null"},{"type":"object","description":"Actor that triggered the event.","properties":{"id":{"type":"string","pattern":"^(usr|gid|wh|cj)_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01h2r5f6qy8kr42p8yfw52spq6"},"object":{"type":"string","enum":["user","gitIdentity","webhook","cronJob"],"example":"user"},"uri":{"type":"string","format":"uri","example":"https://app.cloud.redocly.com/api/users/usr_01h2r5f6qy8kr42p8yfw52spq6"}},"required":["id","object","uri"],"additionalProperties":false}]}},"additionalProperties":false},"CredentialType":{"type":"string","format":"enum","description":"Credential type.","enum":["GITHUB_USER","GITLAB_USER","BITBUCKET_USER","AZURE_USER","URL","GITHUB_CLOUD_APP_INSTALLATION","GITHUB_SERVER_APP_INSTALLATION","GITHUB_SERVER_APP","GITLAB_SELF_MANAGED_APP","GITHUB_CLOUD_INTERNAL_APP_INSTALLATION","MCP_HEADERS","MCP_BEARER","MCP_API_KEY","SUPPORT_DESK"]},"AuthType":{"type":"string","format":"enum","description":"Credential auth type.","enum":["BASIC","PERSONAL_ACCESS_TOKEN","PERSONAL_ACCESS_TOKEN_FOR_ORGANIZATION","PROJECT_ACCESS_TOKEN","INSTALLATION_ACCESS_TOKEN","OAUTH2","BEARER","API_KEY"]},"GitHubInstallationPublicCredential":{"title":"GitHubInstallationPublicCredential","type":"object","properties":{"installationId":{"type":"number"},"namespaceId":{"type":"string"},"repositoryId":{"type":"string"}},"required":["namespaceId","repositoryId"]},"GitHubEEServerAppPublicCredential":{"title":"GitHubEEServerAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"clientId":{"type":"string"},"url":{"type":"string"},"apiUrl":{"type":"string"},"appName":{"type":"string"}},"required":["appId","clientId","url"]},"GitLabSelfManagedAppPublicCredential":{"title":"GitLabSelfManagedAppPublicCredential","type":"object","properties":{"appId":{"type":"string"},"url":{"type":"string"}},"required":["appId","url"]},"AzureDevOpsUserPATPublicCredential":{"title":"AzureDevOpsUserPATPublicCredential","type":"object","properties":{"organizationName":{"type":"string"}},"required":["organizationName"]},"BitbucketCloudUserProjectTokenPublicCredential":{"title":"BitbucketCloudUserProjectTokenPublicCredential","type":"object","properties":{"workspace":{"type":"string","description":"This can either be the workspace ID (slug) or the workspace UUID surrounded by curly-braces, for example: {workspace UUID}."}},"required":["workspace"]},"McpPublicCredential":{"title":"McpPublicCredential","type":"object","description":"Non-secret part of the credential of an agent MCP server: the header that carries the API key, and the names of the secret headers besides the authentication header. Values live in the secret store.","properties":{"header":{"description":"Request header that carries the API key; absent for a bearer token.","type":"string","example":"X-Api-Key"},"secretHeaderNames":{"description":"Names of the secret headers besides the authentication header.","type":"array","items":{"type":"string"},"example":["X-Tenant"]}},"required":["secretHeaderNames"]},"CredentialSchemaBase":{"title":"CredentialsSchemaBase","type":"object","properties":{"id":{"description":"Credential ID. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["credential"],"readOnly":true},"uri":{"description":"Canonical URI for the credential resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/credentials/cred_01h1s5z6vf2mm1mz3hevnn9va7"},"type":{"$ref":"#/components/schemas/CredentialType"},"authType":{"$ref":"#/components/schemas/AuthType"},"name":{"type":"string"},"description":{"type":"string"},"publicData":{"type":"object","description":"Credential public data.","oneOf":[{"$ref":"#/components/schemas/GitHubInstallationPublicCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppPublicCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppPublicCredential"},{"$ref":"#/components/schemas/AzureDevOpsUserPATPublicCredential"},{"$ref":"#/components/schemas/BitbucketCloudUserProjectTokenPublicCredential"},{"$ref":"#/components/schemas/McpPublicCredential"}]},"oAuth2Data":{"type":"object","description":"Credential OAuth2 data.","readOnly":true,"properties":{"id":{"oneOf":[{"type":"string"},{"type":"number"}],"description":"OAuth2 ID. Unique identifier of OAuth2 account.","example":"4acc1f09-1751-6f79-b156-b6877ee205a2"},"userName":{"type":"string","description":"OAuth2 user name.","example":"john-doe"},"displayName":{"type":"string","description":"OAuth2 display name.","example":"John Doe"},"email":{"type":"string","description":"OAuth2 email.","example":"john-doe@mail.com"},"avatarUrl":{"type":"string","description":"OAuth2 avatar URL.","example":"https://avatars.githubusercontent.com/u/1?v=4"}},"required":["id","userName","displayName"]},"userId":{"description":"User ID this credentials belongs to. Unique identifier prefixed with `usr_`.","type":"string","pattern":"^usr_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"isShared":{"type":"boolean","default":false},"isBroken":{"type":"boolean","default":false,"readOnly":true},"parentId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Credential parent ID. Unique identifier prefixed with `cred_`.","example":"cred_01h4e71x94vd68a1farnbfapzg"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","object","uri","type","createdAt","updatedAt"]},"AccessTokenCredential":{"title":"AccessTokenCredential","type":"object","writeOnly":true,"properties":{"accessToken":{"type":"string"}},"required":["accessToken"]},"OAuth2CodeCredential":{"title":"OAuth2CodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"OAuth code to be used to get access/refresh tokens.","type":"string","example":"Yzk5ZDczMzRlNDEwY"}},"required":["code"]},"GithubAppCodeCredential":{"title":"GithubAppCodeCredential","type":"object","writeOnly":true,"properties":{"code":{"description":"GithubApp code to be used to get exchange code on App secrets.","type":"string","example":"Yzk5ZDczMzRlNDEwY"},"url":{"description":"GithubApp url to be used to get exchange code on App secrets.","type":"string","example":"https://github.app.com"}},"required":["code","url"]},"GitLabSelfManagedAppSecretCredential":{"title":"GitLabSelfManagedAppSecretCredential","type":"object","writeOnly":true,"properties":{"appSecret":{"type":"string"},"webhookSecret":{"type":"string"}},"required":["appSecret"]},"GitHubEEServerAppSecretCredential":{"title":"GitHubEEServerAppSecretCredential","type":"object","writeOnly":true,"properties":{"clientSecret":{"type":"string"},"privateKey":{"type":"string"},"webhookSecret":{"type":"string"}}},"CredentialSchema":{"title":"Credential","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchemaBase"},{"type":"object","properties":{"secretData":{"type":"object","description":"Credential secret data.","writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/AccessTokenCredential"},{"$ref":"#/components/schemas/OAuth2CodeCredential"},{"$ref":"#/components/schemas/GithubAppCodeCredential"},{"$ref":"#/components/schemas/GitLabSelfManagedAppSecretCredential"},{"$ref":"#/components/schemas/GitHubEEServerAppSecretCredential"}]}}}]},"CredentialPatchResponse":{"title":"CredentialPatchResponse","type":"object","allOf":[{"$ref":"#/components/schemas/CredentialSchema"},{"type":"object","properties":{"warnings":{"type":"array","description":"Problems that do not block the update.\nFor example, Reunite cannot set up a webhook for a repository that uses this credential.\n","readOnly":true,"items":{"type":"string","example":"Failed to set up webhook for repository \"fe5d7747-af71-449a-951b-f781f54603af\": Azure DevOps token does not have sufficient permissions. Please check token scopes."}}},"required":["warnings"]}]},"CreateCredentialRotationRequest":{"title":"CreateCredentialRotationRequest","type":"object","properties":{"credentialId":{"description":"ID of the credential whose access token is replaced. Unique identifier prefixed with `cred_`.","type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01h1s5z6vf2mm1mz3hevnn9va7"},"secretData":{"description":"New access token for the credential.","$ref":"#/components/schemas/AccessTokenCredential"}},"required":["credentialId","secretData"]},"Feedback":{"type":"object","title":"Feedback","additionalProperties":false,"properties":{"id":{"description":"Feedback ID. Unique identifier prefixed with `fb_`.","type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"fb_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["feedback"],"readOnly":true},"uri":{"description":"Canonical URI for the feedback resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/feedback/fb_01h1s5z6vf2mm1mz3hevnn9va7"},"email":{"type":["string","null"],"format":"email","maxLength":254,"description":"Email address of user who submitted the feedback or `null`."},"path":{"type":"string","minLength":1,"maxLength":1000,"description":"Absolute URL of the page where feedback is submitted (for example from the browser location). A value that is not a valid URL is accepted, but the feedback is marked as spam.","example":"https://example.com/docs/guide"},"location":{"type":["string","null"],"maxLength":5000,"description":"Identifies the location of the component.\nThis could be a code sample."},"lang":{"type":"string","maxLength":20,"description":"Identifies the language of the component's location.\nThis could be the language of a code sample, such as `js`, `php`, or `txt`."},"feedbackComponent":{"type":"string","description":"Name that identifies UI component.","enum":["SENTIMENT","RATING","COMMENT","MOOD","PROBLEM","SCALE"]},"score":{"description":"Numeric value that maps to the feedback component, such as thumbs down (-1) or thumbs up (1), or a 1-5 star rating scale.","type":["integer","null"],"minimum":-1,"maximum":10},"maxScore":{"description":"Maximum score for the feedback component.","type":["integer","null"],"minimum":0,"maximum":10},"reasons":{"type":"array","description":"List of preset reasons for feedback.","items":{"type":"string","maxLength":5000,"description":"Reason for feedback."}},"comment":{"type":"string","maxLength":5000,"description":"Free-form text feedback."},"agent":{"type":["string","null"],"maxLength":200,"description":"Name of the AI agent that submitted the feedback, or `null` for user-submitted feedback.","example":"Cursor"},"targetFeature":{"type":["string","null"],"maxLength":500,"description":"Documentation feature the feedback refers to (for agent submissions), or `null` for user-submitted feedback.","example":"Respect Monitoring API"},"origin":{"type":"string","description":"Origin of the feedback. `FORM` is the feedback form on the page, `API` is a direct API call (for example an agent that follows `llms.txt` instructions), and `MCP` is the MCP server `submit-feedback` tool. When omitted on create, defaults to `API` if `agent` is set and to `FORM` otherwise.","enum":["FORM","API","MCP"],"example":"MCP"},"metadata":{"type":"object","description":"Extra tracking fields. The server sets `userAgent`, `ipAddress`, `platform`, and `email` (read-only). `id`, `firstName`, `lastName`, and `auth_time` pass through if present but are not verified; do not use for access or identity. Any other key is stored with its value redacted to a placeholder.","properties":{"userAgent":{"type":"string","description":"User agent string of the browser that submitted the feedback. Populated by the server from the `User-Agent` header.","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","readOnly":true},"ipAddress":{"type":"string","description":"IP address of the user who submitted the feedback. Populated by the server.","example":"127.0.0.1","readOnly":true},"platform":{"type":"string","description":"Platform from which the feedback originates. Populated by the server from the `Sec-Ch-Ua-Platform` header.","example":"Windows NT 10.0; Win64; x64","readOnly":true},"email":{"type":"string","format":"email","description":"Email address from the user's authentication context. Populated by the server from OIDC claims.","example":"john.doe@acme.com","readOnly":true},"id":{"type":"string","description":"Unverified; whatever the client sent. Not a trusted user ID."},"firstName":{"type":"string","description":"Unverified; client-supplied if present."},"lastName":{"type":"string","description":"Unverified; client-supplied if present."},"auth_time":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Unverified; client-supplied. Not a server-asserted session or token time."}},"additionalProperties":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","readOnly":true},"organizationId":{"description":"Organization ID. Unique identifier prefixed with `org_`.","type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"org_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"projectId":{"description":"Project ID. Unique identifier prefixed with `prj_`.","type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"prj_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","readOnly":true},"internalCommentUpdatedAt":{"type":"string","format":"date-time","description":"Date and time when the internal comment is updated.","readOnly":true},"internalCommentUpdatedById":{"type":"string","description":"ID of the user who updated the internal comment.","readOnly":true}},"required":["id","uri","path","feedbackComponent","createdAt","object","organizationId","projectId","status","origin"]},"FeedbackList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Feedback"}}},"required":["object","page","data"]},"PatchFeedbackRequest":{"type":"object","title":"Feedback PATCH request","minProperties":1,"properties":{"status":{"type":"string","description":"Feedback status.","enum":["NEW","IN_REVIEW","RESOLVED","ARCHIVED","SPAM"],"example":"ARCHIVED","writeOnly":true},"internalComment":{"type":["string","null"],"description":"Internal comment for the feedback.","example":"This feedback is related to the issue 235.","writeOnly":true}}},"GitProviderType":{"type":"string","format":"enum","description":"Git provider type.","enum":["GITHUB_CLOUD","GITHUB_SERVER","GITLAB_CLOUD","GITLAB_SELF_MANAGED","BITBUCKET_CLOUD","BITBUCKET_DATACENTER","AZURE_DEVOPS_SERVICES","AZURE_DEVOPS_SERVER"]},"GitProvider":{"type":"object","description":"Git provider configuration.","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/GitProviderType"},"name":{"type":"string","example":"Redocly GitLab"},"publicConfig":{"type":"object","properties":{"url":{"type":"string","example":"https://gitlab.redocly.dev"},"clientId":{"type":"string","example":"05489443ec38b38f2327cdde9d5f51f284ae1d726130b300ecda0a259010c759"},"appName":{"type":"string","example":"redocly"}}},"isCustom":{"type":"boolean","description":"Indicates whether this provider is a custom provider added to the organization."}},"required":["id","type","name","isCustom"]},"ProjectSource":{"type":"object","properties":{"id":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Project source ID. Unique identifier prefixed with `rem_`.","readOnly":true},"uri":{"description":"Canonical URI for the project source resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/sources/rem_01hc2rvwxf7jyj1er504khx8e7"},"branchName":{"description":"Main branch of the project.","type":"string","example":"main"},"contentPath":{"description":"Path to the project content in the repository.","type":"string","example":"/"},"repoName":{"description":"Name of the repository. Present when Reunite can access the repository.","type":"string","example":"Repo Name"},"repoUrl":{"description":"URL of the repository. Present when Reunite can access the repository.","type":"string","example":"https://github.com/example/example"},"isInternal":{"description":"Whether the project content is stored in the Reunite-hosted repository instead of an external Git repository. Internal sources have no Git provider fields and no credential.","type":"boolean","example":true},"isMonorepo":{"description":"Whether the project content is in a folder of the repository rather than at its root.","type":"boolean","example":true},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"providerConfig":{"$ref":"#/components/schemas/GitProvider","description":"Git provider of the repository."},"canAccessRepo":{"type":"boolean","example":true,"description":"Whether Reunite can access the repository with the source credential. `false` usually means that the access token is expired or revoked."},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential.\nAbsent for internal sources."},"sourceId":{"type":"string","example":"rem_01hc2rvwxf7jyj1er504khx8e7","description":"Use `id` instead.","deprecated":true},"namespaceId":{"type":["string","null"],"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","example":"azure-test-org"},"repositoryId":{"type":"string","description":"Git provider identifier of the repository.","example":"redocly-testing"},"branchDeployStrategy":{"type":"string","description":"Which branches other than the main branch start builds.","enum":["NONE","SELECTED","ALL"]},"selectedDeployBranches":{"type":"array","description":"Branches that start a build when they're updated or a pull request targets them.","items":{"type":"string"}},"prDeploysEnabled":{"type":"boolean","description":"Whether pull requests start builds when they target the main branch or, with the `SELECTED` strategy, a branch in `selectedDeployBranches`.\nHas no effect with the `ALL` strategy, which builds every branch."},"forksPrDeploysEnabled":{"type":"boolean","description":"Whether build starts for PRs from forks."},"visualReviewCheckDisabled":{"type":"boolean","default":false,"description":"Whether the Visual review check is disabled. A disabled check is reported as skipped instead of pending."},"createdAt":{"description":"Time when Reunite created the project source.","type":"string","format":"date-time","readOnly":true},"updatedAt":{"description":"Time of the last change to the project source.","type":"string","format":"date-time","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["projectSource"],"readOnly":true}},"required":["id","uri","branchName","contentPath","isInternal","isMonorepo","branchDeployStrategy","selectedDeployBranches","prDeploysEnabled","forksPrDeploysEnabled","visualReviewCheckDisabled","createdAt","updatedAt","object"]},"ProjectSourceList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/ProjectSource"}}},"required":["object","page","data"]},"MountPath":{"type":"string","description":"Path to the folder in the local repository where remote content is mounted. Paths outside of the project's `contentPath` are not allowed.","example":"apis/test/@v1"},"AutoSync":{"type":"boolean","default":true,"description":"Whether Reunite syncs changes from the remote automatically."},"AutoSyncDisabledAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Time when Reunite turned off auto-sync after repeated failed updates.\n`null` when auto-sync is on or a user turned it off.","example":"2021-08-25T10:00:00.000Z"},"AutoMerge":{"type":"boolean","default":false,"description":"Auto merge changes from remote."},"MountBranchName":{"type":"string","description":"Name of the branch to mount.","example":"main"},"GenericRemoteError":{"oneOf":[{"type":"null"},{"type":"object","properties":{"autoMerge":{"type":"object","properties":{"message":{"type":"string","description":"Error message describing the auto merge failure."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the error."},"buildId":{"type":"string","description":"ID of the build that triggered the auto merge."}},"required":["message","timestamp"]}},"required":["autoMerge"]}],"readOnly":true},"LastSyncedAt":{"type":["string","null"],"format":"date-time","description":"Last time remote processed the default branch update.\n`null` when the remote has never been synced.\nFor URL remotes it is updated on interval specified for the remote.","example":"2021-08-25T10:00:00.000Z"},"SyncAttempts":{"type":"integer","description":"Number of failed attempts to sync the remote. If this value exceeds **6**, automatic synchronization is disabled.","example":1},"UrlRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","contentType","url","fileName","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"URL"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"string","enum":["FOLDER","FILE"]},"url":{"description":"URL to the remote content.","type":"string","example":"https://raw.githubusercontent.com/Redocly/museum-openapi-example/main/openapi.yaml"},"interval":{"type":"number","description":"Interval in seconds to sync URL remote content.","minimum":900,"default":1800,"example":900},"fileName":{"type":"string","description":"File name of the remote content.","example":"openapi.yaml"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"lastFinishedUrlUpdateId":{"type":["string","null"],"description":"ID of the last finished URL update.","example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"uri":{"type":"string","format":"uri","description":"Canonical URI for the URL remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}},"CicdRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","object","uri"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"CICD"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Date and time of upserting Remote by user.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"User ID who created Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"User who recently upserted Remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"providerType":{"type":"null","readOnly":true},"namespaceId":{"type":"null","readOnly":true},"repositoryId":{"type":"null","readOnly":true},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"type":"null","readOnly":true},"credentialId":{"type":"null","readOnly":true},"branchName":{"type":"null","readOnly":true},"contentType":{"type":"null","readOnly":true},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"errors":{"$ref":"#/components/schemas/GenericRemoteError"},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"type":"string","format":"uri","description":"Canonical URI for the CICD remote resource.","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"}}},"PushProjectBuildStatus":{"type":"object","required":["deploy","scorecard"],"properties":{"deploy":{"type":"object","properties":{"url":{"type":["string","null"],"description":"Deployment URL."},"status":{"type":"string","description":"Status of project deployment.","enum":["pending","running","success","failed","skipped"],"example":"running"}},"required":["status","url"]},"scorecard":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Scorecard name.","example":"Scorecard: Compliance API"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Scorecard status description."},"url":{"type":"string","description":"Scorecard URL."}},"required":["name","status","description","url"]}}}},"Push":{"type":"object","required":["id","remoteIds","commit","uploadedFiles","isOutdated","hasChanges","status"],"properties":{"id":{"description":"Push ID. Unique identifier prefixed with `push_`.","type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"push_01h2captefvs9bpg3v6twqqj9n","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["push"],"readOnly":true},"remoteIds":{"type":"array","items":{"type":"string","description":"Remote IDs. Unique identifier prefixed with `rem_` for pushed remotes.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$"}},"remoteId":{"type":"string","description":"Remote ID. Unique identifier prefixed with `rem_` for pushed remotes. Used only for single remote push.","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","deprecated":true},"commit":{"type":"object","required":["message","branchName","author"],"description":"Commit details.","properties":{"message":{"type":"string","description":"Commit message.","example":"chore: Add new API"},"branchName":{"type":"string","description":"Branch name.","example":"main"},"sha":{"type":["string","null"],"description":"SHA of the commit.","example":"f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"url":{"type":["string","null"],"format":"uri","description":"Commit URL.","example":"https://gitlab.com/example-user/example-project/-/commit/f64ae8ea9dd7cf28822c471ea56b6d6765971305"},"createdAt":{"type":["string","null"],"format":"date-time","description":"Commit creation date.","example":"2020-01-01T00:00:00.000Z"},"namespaceId":{"type":["string","null"],"description":"Git namespace ID (organization login for GitHub).","example":"Redocly"},"repositoryId":{"type":["string","null"],"description":"Git repository ID.","example":"redoc"},"author":{"description":"Commit author details.","type":"object","required":["email","name"],"properties":{"name":{"description":"Commit author name.","example":"John Doe"},"email":{"type":"string","description":"Commit author email.","format":"email","example":"johndoe@example.com"},"image":{"type":["string","null"],"description":"Commit author image URL.\nIf not provided, the default image is used.\nIf the image is not accessible, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) can be used."}}},"statuses":{"type":"array","readOnly":true,"description":"List of commit statuses set by the platform to the commit that triggered push.","items":{"type":"object","properties":{"name":{"type":"string","description":"Commit status name.","example":"Scorecard: Compliance API (org-slug/project-slug/remote-mount-path (remote))"},"status":{"type":"string","enum":["pending","running","success","failed"]},"description":{"type":"string","description":"Commit status description."},"url":{"type":["string","null"],"description":"Commit status URL."}},"required":["name","status","description","url"]}}}},"scoutJobId":{"type":["string","null"],"pattern":"^job_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"`PROCESS_GIT_REPO` job, if any. Required for Scout pushes. Unique identifier prefixed with `job_`.","example":"job_01h2captefvs9bpg3v6twqqj9n"},"scoutJobContext":{"type":"string","writeOnly":true,"description":"Context of the `PROCESS_GIT_REPO` job, if any.\nApplies to Scout pushes only.\nUsed as commit status context.","example":"Team A"},"replace":{"type":"boolean","description":"Whether to replace the existing files.\nIf provided, all files from the remote are removed and the new files are added.\nIf not provided, the existing files are kept and the new files are added, overwriting the existing files where they overlap.","example":true,"default":false},"files":{"type":"object","writeOnly":true,"description":"Map of files to upload.","additionalProperties":{"description":"Files to push.","type":"string","format":"binary"}},"uploadedFiles":{"type":"array","readOnly":true,"description":"List of pushed files.","items":{"type":"object","description":"Pushed file.","required":["path","mimeType"],"properties":{"path":{"type":"string","description":"File path.","example":"some-path/index.html"},"mimeType":{"type":"string","description":"File MIME type.","example":"text/html"}}}},"isMainBranch":{"type":"boolean","example":true,"description":"Is push provided to the main branch."},"isOutdated":{"type":"boolean","readOnly":true,"description":"Indicates whether the push is discarded.\nIn case several pushes are performed in a row, the one with most recent commit is applied only.\nAlways `false` when commit's `createdAt` is omitted.","example":false},"hasChanges":{"type":"boolean","readOnly":true,"description":"Indicates if pushed files have changes.","example":false},"status":{"type":"object","readOnly":true,"description":"Status of the corresponding preview and production builds.","required":["preview","production"],"properties":{"preview":{"$ref":"#/components/schemas/PushProjectBuildStatus"},"production":{"$ref":"#/components/schemas/PushProjectBuildStatus"}}}}},"PushList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Push"}}},"required":["object","page","data"]},"GitRemote":{"type":"object","required":["id","type","mountPath","mountBranchName","createdAt","updatedAt","editedAt","createdById","editedById","repositoryId","branchName","contentPath","contentType","providerType","credentialId","uri","object"],"properties":{"id":{"description":"Remote ID. Unique identifier prefixed with `rem_`.","type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"rem_01h1s5z6vf2mm1mz3hevnn9va7","readOnly":true},"type":{"type":"string","const":"GIT"},"mountPath":{"$ref":"#/components/schemas/MountPath"},"autoSync":{"$ref":"#/components/schemas/AutoSync"},"autoSyncDisabledAt":{"$ref":"#/components/schemas/AutoSyncDisabledAt"},"autoMerge":{"$ref":"#/components/schemas/AutoMerge"},"createdAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"updatedAt":{"type":"string","readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"editedAt":{"description":"Time when a user last created or updated the remote.","type":["string","null"],"readOnly":true,"examples":["2023-06-07T00:00:00Z"],"format":"date-time"},"createdById":{"description":"ID of the user who created the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"editedById":{"description":"ID of the user who last created or updated the remote.","type":["string","null"],"example":"usr_01hh1t9sa6gwfv5naz04gr7ehm","readOnly":true},"lastSyncedAt":{"$ref":"#/components/schemas/LastSyncedAt"},"attempts":{"$ref":"#/components/schemas/SyncAttempts"},"providerType":{"$ref":"#/components/schemas/GitProviderType"},"namespaceId":{"description":"Git provider namespace of the repository, such as a GitHub organization or an Azure DevOps project.","type":["string","null"]},"repositoryId":{"description":"Git provider identifier of the repository.","type":"string"},"mountBranchName":{"$ref":"#/components/schemas/MountBranchName"},"contentPath":{"description":"Path to the connected folder in the remote repository.","type":"string"},"credentialId":{"type":"string","pattern":"^cred_[0-9abcdefghjkmnpqrstvwxyz]{26}$","example":"cred_01hc2rvwxf7jyj1er504khx8e7","description":"ID of the credential Reunite uses to access the repository.\nUse it to rotate the access token of the credential."},"branchName":{"description":"Branch name in the remote repository.","type":"string","example":"dev"},"contentType":{"type":"string","enum":["FOLDER","FILE"],"example":"FILE"},"url":{"type":"null","readOnly":true},"interval":{"type":"null","readOnly":true},"object":{"description":"Entity name.","type":"string","enum":["remote"],"readOnly":true},"uri":{"description":"Canonical URI for the remote resource.","type":"string","format":"uri","readOnly":true,"example":"https://app.cloud.redocly.com/api/orgs/org_01hh1t9sa6gwfv5naz04gr7ehm/projects/prj_01hh1t9sa6gwfv5naz04gr7ehm/remotes/rem_01h1s5z6vf2mm1mz3hevnn9va7"},"lastFinishedGitUpdateId":{"type":["string","null"],"description":"ID of the last finished Git update.","readOnly":true,"example":"grupd_01jw8fczg4n4fcwkkg0nac3ddh"},"errors":{"$ref":"#/components/schemas/GenericRemoteError"}}},"Remote":{"oneOf":[{"$ref":"#/components/schemas/GitRemote"},{"$ref":"#/components/schemas/UrlRemote"},{"$ref":"#/components/schemas/CicdRemote"}],"discriminator":{"propertyName":"type","mapping":{"GIT":"#/components/schemas/GitRemote","URL":"#/components/schemas/UrlRemote","CICD":"#/components/schemas/CicdRemote"}}},"RemoteList":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"page":{"$ref":"#/components/schemas/Page"},"data":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/Remote"}}},"required":["object","page","data"]}},"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","description":"API key is required to access API.\nCreate an API key by visiting [Platform](https://app.cloud.redocly.com/) and navigating to **Access** > **API Keys** page."}},"responses":{"BadRequestError":{"description":"Bad Request.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"InternalServerError":{"description":"Internal Server Error.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"UnauthorizedError":{"description":"User is not authorized to access this resource.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"ForbiddenError":{"description":"Forbidden.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NotFoundError":{"description":"Resource not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NoContent":{"description":"No Content."},"TooManyRequestsError":{"description":"Too Many Requests.\n\nThe organization exceeded the rate limit for this operation.\nThe `Retry-After` header gives the number of seconds to wait before the next request.","headers":{"Retry-After":{"description":"Number of seconds to wait before sending another request.","schema":{"type":"integer","minimum":1},"example":30}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PaymentRequiredError":{"description":"Payment Required.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"parameters":{"OrgId":{"name":"orgId","description":"Organization ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^org_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `org_`."},"example":"org_01h1s5z6vf2mm1mz3hevnn9va7"},"After":{"name":"after","in":"query","required":false,"description":"Cursor of the next page.\n`page.nextPage` contains it as the `after` query parameter, so you can also request `page.nextPage` directly.\nThe cursor is opaque, and its internal structure is subject to change.","schema":{"type":"string"},"example":"a25fgaksjf23la=="},"Before":{"name":"before","in":"query","required":false,"description":"Cursor of the previous page.\n`page.previousPage` contains it as the `before` query parameter, so you can also request `page.previousPage` directly.\nThe cursor is opaque, and its internal structure is subject to change.","schema":{"type":"string"},"example":"bfg23aksjf23zb1=="},"Limit":{"name":"limit","description":"Use to return a number of results per page.\nIf there is more data, use in combination with `after` to page through the data.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10},"example":10},"Filter":{"name":"filter","description":"Filters the collection items. This field requires a special format.\n\nFor more information, see [Filter results](#section/filter-results).","in":"query","required":false,"schema":{"type":"string"},"example":"status:approved createdAt:30d"},"Sort":{"name":"sort","description":"To sort by ID in descending order use `-id`.\nTo sort by ID in ascending order use `id`.","in":"query","required":false,"schema":{"type":"string","default":"-id"},"example":"-id"},"Search":{"name":"search","in":"query","description":"Search.","required":false,"schema":{"type":"string"},"example":"text-to-search"},"ProjectId":{"name":"projectId","description":"Project ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^prj_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `prj_`."},"example":"prj_01hh1t9sa6gwfv5naz04gr7ehm"},"ExportJobId":{"name":"exportJobId","description":"Export Job ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^exp_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `exp_`."},"example":"exp_01h1s5z6vf2mm1mz3hevnn9va7"},"FeedbackId":{"name":"feedbackId","description":"Feedback ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^fb_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `fb_`."},"example":"fb_01h1s5z6vf2mm1mz3hevnn9va7"},"SourceId":{"name":"sourceId","description":"Project source ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `rem_`."},"example":"rem_01h1s5z6vf2mm1mz3hevnn9va7"},"PushId":{"name":"pushId","description":"Push ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^push_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `push_`."},"example":"push_01hhh91dhc2kg9naf476y7qmas"},"RemoteId":{"name":"remoteId","description":"Remote ID.","required":true,"in":"path","schema":{"type":"string","pattern":"^rem_[0-9abcdefghjkmnpqrstvwxyz]{26}$","description":"Unique identifier prefixed with `rem_`."},"example":"rem_01h1s5z6vf2mm1mz3hevnn9va7"}}}},"operationId":"getAuditLogExportResult","operationSource":{"kind":"code-sample","operationType":"http","method":"GET","path":"/orgs/{orgId}/audit-log-export-results/{exportJobId}","servers":[{"url":"/_mock/docs/platform/customization/reunite-api/openapi","description":"Mock server","isMockServer":true},{"url":"https://app.cloud.redocly.com/api","description":"Production main server."},{"url":"https://app.cloud.eu.redocly.com/api","description":"Production EU server."}],"parameters":{"path":[{"name":"orgId","in":"path","required":true,"example":"org_01h1s5z6vf2mm1mz3hevnn9va7","schemaId":"schema_0"},{"name":"exportJobId","in":"path","required":true,"example":"exp_01h1s5z6vf2mm1mz3hevnn9va7","schemaId":"schema_1"}],"query":[],"querystring":[],"header":[{"name":"x-redocly-client","in":"header","required":false,"example":"reunite-ui/0.92.1","schemaId":"schema_2"}],"cookie":[]},"security":[{"schemes":[{"id":"ApiKey","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","401","403","404","429","500"],"pointer":"/orgs/{orgId}/audit-log-export-results/{exportJobId}","openApiOperationId":"getAuditLogExportResult","summary":"Retrieve an audit log export file"},"options":{"excludeFromSearch":true,"mockServer":{"url":"/_mock/docs/platform/customization/reunite-api/openapi","position":"first","description":"Mock server"}},"pointer":"/paths/~1orgs~1{orgId}~1audit-log-export-results~1{exportJobId}/get"}},"children":[]}]},{"$$mdtype":"Tag","name":"NumberedItem","attributes":{"type":"number","size":"small","index":2,"isLast":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response body holds the events, newest first, in the format you chose in the ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#start-an-export-job"},"children":["Start an export job"]}," section."," ","The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Content-Disposition"]}," header suggests a file name."," ","Until the job completes, this request returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]},"."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"event-reference","__idx":7},"children":["Event reference"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reference for the fields in each exported event and the event types the audit log records."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"event-fields","__idx":8},"children":["Event fields"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An event in an export can have the following fields."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["id"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The identifier of the event."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The entity name."," ","Always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The type of the recorded action, such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["com.redocly.pullRequest.merged"]},"."," ","See ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#event-types"},"children":["Event types"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["time"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The time when the action happened, in ISO 8601 format (UTC)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["subject"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The identifier of the resource that the action applied to."," ","The prefix indicates the resource type, such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["usr_"]}," for a user or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pr_"]}," for a pull request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["actor"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#actor-object"},"children":["Actor object"]}," | null"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Who or what triggered the action."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," when no user, webhook, or scheduled job triggered the action."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["clientIp"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The IP address of the client that triggered the action."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["projectId"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The identifier of the project."," ","Empty for organization-level events."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["projectSlug"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The slug of the project."," ","Empty for organization-level events."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"actor-object","__idx":9},"children":["Actor object"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["id"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The identifier of the actor."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The type of actor."," ","Possible values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webhook"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cronJob"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["uri"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The URL of the actor in the Reunite API."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"event-types","__idx":10},"children":["Event types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The export includes the following event types."," ","Use any of them as a value of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filter"]}," parameter in the ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#start-an-export-job"},"children":["Start an export job"]}," section."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"api-keys","__idx":11},"children":["API keys"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.apiKey.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An API key was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.apiKey.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An API key was updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.apiKey.revoked"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An API key was revoked."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"committers","__idx":12},"children":["Committers"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.gitIdentity.linked"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A committer was linked to a member or to another committer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.gitIdentity.unlinked"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A committer was unlinked from a member or from another committer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.gitIdentity.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A committer was removed from the organization."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"scim-tokens","__idx":13},"children":["SCIM tokens"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.scimCredential.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A SCIM token was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.scimCredential.revoked"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A SCIM token was revoked."," ","Revoking all tokens at once records one event for each token."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"invites-and-memberships","__idx":14},"children":["Invites and memberships"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.invite.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was invited to the organization."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.invite.resent"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An invitation was sent again."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.userInvite.accepted"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An invitation was accepted."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.membership.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was added to the organization."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.membership.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A membership attribute was updated, such as a role change."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.membership.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was removed from the organization."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"teams","__idx":15},"children":["Teams"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.team.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A team was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.team.deleted"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A team was deleted."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.teamMember.added"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was added to a team."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.teamMember.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was removed from a team."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.syncedTeamMember.added"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was added to a synced team at sign-in or through SCIM."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.syncedTeamMember.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was removed from a synced team at sign-in, through SCIM, or because their membership or the team was removed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.teamManager.added"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user was made a team manager."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.teamManager.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user's team manager role was removed."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"organizations","__idx":16},"children":["Organizations"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.organization.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The organization was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.organization.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Organization settings were updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.organization.slugUpdated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The organization slug was changed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.organization.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The organization was deleted."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"projects","__idx":17},"children":["Projects"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.project.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A project was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.project.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Project settings were updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.project.slugUpdated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The project slug was changed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.project.urlUpdated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The project URL was changed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.project.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A project was deleted."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.projectConfig.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The project configuration was updated."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"branches","__idx":18},"children":["Branches"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.branch.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A branch was created."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.branch.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A branch was updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.branch.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A branch was deleted."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.gitAccess.pushed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Changes were pushed with Git to a project that uses Redocly-hosted Git."," ","The event lists only the branches that accepted the push."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"custom-domains","__idx":19},"children":["Custom domains"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.projectCustomDomain.verified"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A custom domain was verified for a project."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.projectCustomDomain.removed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A custom domain was removed from a project."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"remote-content","__idx":20},"children":["Remote content"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.remote.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A remote content source was added."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.remote.deleted"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A remote content source was deleted."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.gitCredential.rotated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The access token of a Git provider credential was rotated."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"notifications","__idx":21},"children":["Notifications"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.notificationSettings.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Notification settings were updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.notifications.disabled"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A user's notifications were disabled."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"subscription","__idx":22},"children":["Subscription"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.subscription.updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The subscription was updated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.subscription.churned"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The subscription was canceled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.subscription.reactivated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The subscription was reactivated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.subscription.trialEnded"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The trial period ended."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"pull-requests","__idx":23},"children":["Pull requests"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Event type"},"children":["Event type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.created"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A pull request was opened."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.closed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A pull request was closed without merging."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.reopened"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A closed pull request was reopened."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.merged"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A pull request was merged."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.approved"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A reviewer approved a pull request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.requestedChanges"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A reviewer requested changes on a pull request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.reviewRequested"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A review was requested from a user or team."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.readyForReview"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A draft pull request was marked as ready for review."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.markedAsDraft"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A pull request was converted to a draft."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.commented"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A comment was added to a pull request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.commitPushed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A commit was pushed to a pull request branch."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.forcePushed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A pull request branch was force-pushed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["com.redocly.pullRequest.visualReviewUpdated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The visual review of a pull request was updated."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resources","__idx":24},"children":["Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/platform/organization/api-keys"},"children":["Manage API keys"]}]}," - Create the key that authenticates your audit log exports and set the permissions it grants"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/platform/customization/reunite-api/openapi"},"children":["Reunite API reference"]}]}," - Look up the audit log export operations, their parameters, and their response schemas"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/platform/organization/teams"},"children":["Teams and users"]}]}," - Organize users into teams with role-based permissions for effective collaboration and access control"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/platform/organization/access-compliance-reports"},"children":["Compliance reports"]}]}," - Download Redocly's SOC 2, penetration test, and CAIQ reports for your security reviews"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/platform/access/roles"},"children":["Roles and permissions"]}]}," - Review which role grants the permission to read audit logs"]}]}]},"frontmatter":{"products":["Redoc","Revel","Reef","Realm"],"plans":["Enterprise+"]},"tagList":["admonition","configOptionRequirements","numbered-item","numbered-list","replay-openapi","table"],"title":"Audit logs","lastModified":"2026-10-29T11:45:07.000Z"}