openapi: 3.0.0 info: contact: email: support@getconvoy.io name: Convoy Support url: https://getconvoy.io/docs description: Convoy is a fast and secure webhooks proxy. This document contains datastore's API specification. license: name: Mozilla Public License 2.0 url: https://www.mozilla.org/en-US/MPL/2.0/ termsOfService: https://getconvoy.io/terms title: Convoy API Reference Delivery Attempts Portal Links API version: 26.3.5 servers: - url: https://us.getconvoy.cloud/api description: US Region - url: https://eu.getconvoy.cloud/api description: EU Region tags: - description: Portal Links related APIs name: Portal Links paths: /v1/projects/{projectID}/portal-links: get: parameters: - description: Project ID in: path name: projectID required: true schema: type: string - in: query name: direction schema: enum: - next - prev type: string x-enum-varnames: - Next - Prev - description: A pagination cursor to fetch the next page of a list example: 01H0JA5MEES38RRK3HTEJC647K in: query name: next_page_cursor schema: type: string - description: The owner ID of the endpoint example: 01H0JA5MEES38RRK3HTEJC647K in: query name: ownerId schema: type: string - description: The number of items to return per page example: 20 in: query name: perPage schema: type: integer - description: A pagination cursor to fetch the previous page of a list example: 01H0JATTVCXZK8FRDX1M1JN3QY in: query name: prev_page_cursor schema: type: string - description: The name of the endpoint example: endpoint-1 in: query name: q schema: type: string - description: Sort order, values are `ASC` or `DESC`, defaults to `DESC` example: ASC | DESC in: query name: sort schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: allOf: - $ref: '#/components/schemas/models.PagedResponse' - properties: content: items: $ref: '#/components/schemas/datastore.PortalLinkResponse' type: array type: object type: object description: OK '400': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Bad Request '401': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Unauthorized '404': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Not Found security: - ApiKeyAuth: [] tags: - Portal Links description: This endpoint fetches multiple portal links operationId: LoadPortalLinksPaged summary: List All Portal Links post: parameters: - description: Project ID in: path name: projectID required: true schema: type: string responses: '201': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/datastore.PortalLinkResponse' type: object description: Created '400': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Bad Request '401': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Unauthorized '404': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Not Found security: - ApiKeyAuth: [] tags: - Portal Links description: This endpoint creates a portal link operationId: CreatePortalLink requestBody: content: application/json: schema: $ref: '#/components/schemas/datastore.CreatePortalLinkRequest' description: Portal Link Details required: true summary: Create a Portal Link /v1/projects/{projectID}/portal-links/{portalLinkID}: get: parameters: - description: Project ID in: path name: projectID required: true schema: type: string - description: portal link id in: path name: portalLinkID required: true schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/datastore.PortalLinkResponse' type: object description: OK '400': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Bad Request '401': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Unauthorized '404': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Not Found security: - ApiKeyAuth: [] tags: - Portal Links description: This endpoint retrieves a portal link by its id. operationId: GetPortalLink summary: Retrieve a Portal Link put: parameters: - description: Project ID in: path name: projectID required: true schema: type: string - description: portal link id in: path name: portalLinkID required: true schema: type: string responses: '202': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/datastore.PortalLinkResponse' type: object description: Accepted '400': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Bad Request '401': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Unauthorized '404': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Not Found security: - ApiKeyAuth: [] tags: - Portal Links description: This endpoint updates a portal link operationId: UpdatePortalLink requestBody: content: application/json: schema: $ref: '#/components/schemas/datastore.UpdatePortalLinkRequest' description: Portal Link Details required: true summary: Update a Portal Link /v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token: get: parameters: - description: Project ID in: path name: projectID required: true schema: type: string - description: portal link id in: path name: portalLinkID required: true schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: type: string type: object description: OK '400': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Bad Request '401': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Unauthorized '404': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Not Found security: - ApiKeyAuth: [] tags: - Portal Links description: This endpoint retrieves a portal link auth token operationId: RefreshPortalLinkAuthToken summary: Get a Portal Link Auth Token /v1/projects/{projectID}/portal-links/{portalLinkID}/revoke: put: parameters: - description: Project ID in: path name: projectID required: true schema: type: string - description: portal link id in: path name: portalLinkID required: true schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: OK '400': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Bad Request '401': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Unauthorized '404': content: application/json: schema: allOf: - $ref: '#/components/schemas/util.ServerResponse' - properties: data: $ref: '#/components/schemas/handlers.Stub' type: object description: Not Found security: - ApiKeyAuth: [] tags: - Portal Links description: This endpoint revokes a portal link operationId: RevokePortalLink summary: Revoke a Portal Link components: schemas: datastore.PortalAuthType: enum: - refresh_token - static_token type: string x-enum-varnames: - PortalAuthTypeRefreshToken - PortalAuthTypeStaticToken datastore.PaginationData: properties: has_next_page: type: boolean has_prev_page: type: boolean next_page_cursor: type: string per_page: type: integer prev_page_cursor: type: string type: object datastore.Secret: properties: created_at: type: string deleted_at: type: string expires_at: type: string uid: type: string updated_at: type: string value: type: string type: object handlers.Stub: type: object datastore.ApiKey: properties: header_name: type: string header_value: type: string type: object datastore.OAuth2FieldMapping: properties: access_token: description: Field name for access token (e.g., "accessToken", "access_token", "token") type: string expires_in: description: Field name for expiry time (e.g., "expiresIn", "expires_in", "expiresAt") type: string token_type: description: Field name for token type (e.g., "tokenType", "token_type") type: string type: object datastore.MtlsClientCert: properties: client_cert: description: ClientCert is the client certificate PEM string type: string client_key: description: ClientKey is the client private key PEM string type: string type: object util.ServerResponse: properties: message: type: string status: type: boolean type: object datastore.OAuth2SigningKey: properties: crv: description: EC (Elliptic Curve) key fields type: string d: description: Private key (EC only) type: string dp: description: RSA first factor CRT exponent (RSA private key only) type: string dq: description: RSA second factor CRT exponent (RSA private key only) type: string e: description: RSA public exponent (RSA only) type: string kid: description: Key ID type: string kty: description: 'Key type: "EC" or "RSA"' type: string n: description: RSA key fields type: string p: description: RSA first prime factor (RSA private key only) type: string q: description: RSA second prime factor (RSA private key only) type: string qi: description: RSA first CRT coefficient (RSA private key only) type: string x: description: X coordinate (EC only) type: string y: description: Y coordinate (EC only) type: string type: object datastore.OAuth2AuthenticationType: enum: - shared_secret - client_assertion type: string x-enum-varnames: - SharedSecretAuth - ClientAssertionAuth datastore.EndpointAuthentication: properties: api_key: $ref: '#/components/schemas/datastore.ApiKey' basic_auth: $ref: '#/components/schemas/datastore.BasicAuth' oauth2: $ref: '#/components/schemas/datastore.OAuth2' type: $ref: '#/components/schemas/datastore.EndpointAuthenticationType' type: object datastore.BasicAuth: properties: password: type: string username: type: string type: object datastore.UpdatePortalLinkRequest: properties: auth_type: type: string can_manage_endpoint: description: Specify whether endpoint management can be done through the Portal Link UI type: boolean endpoints: description: 'Deprecated IDs of endpoints in this portal link' items: type: string type: array name: description: Portal Link Name type: string owner_id: description: OwnerID, the portal link will inherit all the endpoints with this owner ID type: string type: object models.PagedResponse: properties: content: {} pagination: allOf: - $ref: '#/components/schemas/datastore.PaginationData' nullable: true type: object datastore.Endpoint: properties: advanced_signatures: type: boolean authentication: $ref: '#/components/schemas/datastore.EndpointAuthentication' content_type: type: string created_at: type: string deleted_at: type: string description: type: string events: type: integer failure_rate: type: number http_timeout: type: integer mtls_client_cert: allOf: - $ref: '#/components/schemas/datastore.MtlsClientCert' description: mTLS client certificate configuration name: type: string owner_id: type: string project_id: type: string rate_limit: type: integer rate_limit_duration: type: integer secrets: items: $ref: '#/components/schemas/datastore.Secret' type: array slack_webhook_url: type: string status: $ref: '#/components/schemas/datastore.EndpointStatus' support_email: type: string uid: type: string updated_at: type: string url: type: string type: object datastore.EndpointStatus: enum: - active - inactive - paused type: string x-enum-varnames: - ActiveEndpointStatus - InactiveEndpointStatus - PausedEndpointStatus datastore.OAuth2: properties: audience: type: string authentication_type: $ref: '#/components/schemas/datastore.OAuth2AuthenticationType' client_id: type: string client_secret: description: Encrypted at rest type: string expiry_time_unit: allOf: - $ref: '#/components/schemas/datastore.OAuth2ExpiryTimeUnit' description: Expiry time unit (seconds, milliseconds, minutes, hours) field_mapping: allOf: - $ref: '#/components/schemas/datastore.OAuth2FieldMapping' description: Field mapping for flexible token response parsing grant_type: type: string issuer: type: string scope: type: string signing_algorithm: type: string signing_key: allOf: - $ref: '#/components/schemas/datastore.OAuth2SigningKey' description: Encrypted at rest subject: type: string url: type: string type: object datastore.CreatePortalLinkRequest: properties: auth_type: type: string can_manage_endpoint: description: Specify whether endpoint management can be done through the Portal Link UI type: boolean endpoints: description: 'Deprecated IDs of endpoints in this portal link' items: type: string type: array name: description: Portal Link Name type: string owner_id: description: OwnerID, the portal link will inherit all the endpoints with this owner ID type: string type: object datastore.OAuth2ExpiryTimeUnit: enum: - seconds - milliseconds - minutes - hours type: string x-enum-varnames: - ExpiryTimeUnitSeconds - ExpiryTimeUnitMilliseconds - ExpiryTimeUnitMinutes - ExpiryTimeUnitHours datastore.EndpointAuthenticationType: enum: - api_key - oauth2 - basic_auth type: string x-enum-varnames: - APIKeyAuthentication - OAuth2Authentication - BasicAuthentication datastore.PortalLinkResponse: properties: auth_key: type: string auth_type: $ref: '#/components/schemas/datastore.PortalAuthType' can_manage_endpoint: type: boolean created_at: type: string deleted_at: type: string endpoint_count: type: integer endpoints: items: type: string type: array endpoints_metadata: items: $ref: '#/components/schemas/datastore.Endpoint' type: array name: type: string owner_id: type: string project_id: type: string token: type: string uid: type: string updated_at: type: string url: type: string type: object securitySchemes: ApiKeyAuth: in: header name: Authorization type: apiKey