openapi: 3.1.0 info: title: Fordefi Address Book Authorization Tokens API version: 0.2.0 description: These endpoints allow you to list the contacts in your address book.

To add/remove contacts, visit the Fordefi web console. See the user guide for more info. servers: - url: https://api.fordefi.com/ description: Production security: - bearerAuth: [] tags: - name: Authorization Tokens description: These endpoints allow you to manage end-user authorization tokens used for Fordefi's WaaS solution.

Authorization tokens allow end users to authenticate with Fordefi. Each end user can have a maximum of ten active authorization tokens at any time.

More information on authenticating end users is provided in the WaaS developer guide. paths: /api/v1/authorization-tokens: post: tags: - Authorization Tokens summary: Issue Authorization Token description: Issue authorization token for an end user. operationId: issue_authorization_token_api_v1_authorization_tokens_post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IssueAuthTokenRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/IssueAuthTokenResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/DefinedPreconditionError_IssueEndUserAuthTokenErrorType_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/ValidationError' '500': description: Unexpected Error content: application/json: schema: $ref: '#/components/schemas/BaseError' '401': description: Unauthorized User content: application/json: schema: $ref: '#/components/schemas/BaseError' '403': description: Forbidden User content: application/json: schema: $ref: '#/components/schemas/BaseError' '408': description: Request Timeout content: application/json: schema: $ref: '#/components/schemas/BaseError' '429': description: Rate Limit Exceeded content: application/json: schema: $ref: '#/components/schemas/RateLimitError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ResourceError' get: tags: - Authorization Tokens summary: List Authorization Tokens description: List authorization tokens of end users. operationId: list_authorization_tokens_api_v1_authorization_tokens_get parameters: - name: page in: query required: false schema: type: integer minimum: 1 description: The page number to fetch. default: 1 title: Page description: The page number to fetch. - name: size in: query required: false schema: type: integer maximum: 100 minimum: 0 description: The number of items per page. default: 50 title: Size description: The number of items per page. - name: skip_count in: query required: false schema: type: boolean description: Whether to skip counting the total number of items. default: false title: Skip Count description: Whether to skip counting the total number of items. - name: user_ids in: query required: false schema: description: The unique identifiers of the users. title: User Ids type: array items: type: string format: uuid description: The unique identifiers of the users. - name: user_types in: query required: false schema: description: User types to filter. Only end users are currently supported. title: User Types type: array items: const: end_user type: string description: User types to filter. Only end users are currently supported. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ListAuthTokensResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/PreconditionFailedError' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/ValidationError' '500': description: Unexpected Error content: application/json: schema: $ref: '#/components/schemas/BaseError' '401': description: Unauthorized User content: application/json: schema: $ref: '#/components/schemas/BaseError' '403': description: Forbidden User content: application/json: schema: $ref: '#/components/schemas/BaseError' '408': description: Request Timeout content: application/json: schema: $ref: '#/components/schemas/BaseError' '429': description: Rate Limit Exceeded content: application/json: schema: $ref: '#/components/schemas/RateLimitError' /api/v1/authorization-tokens/{id}: delete: tags: - Authorization Tokens summary: Delete Authorization Token description: Delete authorization token of an end user. operationId: delete_authorization_token_api_v1_authorization_tokens__id__delete parameters: - name: id in: path required: true schema: type: string format: uuid description: ID of the authorization token to delete. title: Id description: ID of the authorization token to delete. responses: '204': description: Successful Response '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/PreconditionFailedError' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/ValidationError' '500': description: Unexpected Error content: application/json: schema: $ref: '#/components/schemas/BaseError' '401': description: Unauthorized User content: application/json: schema: $ref: '#/components/schemas/BaseError' '403': description: Forbidden User content: application/json: schema: $ref: '#/components/schemas/BaseError' '408': description: Request Timeout content: application/json: schema: $ref: '#/components/schemas/BaseError' '429': description: Rate Limit Exceeded content: application/json: schema: $ref: '#/components/schemas/RateLimitError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ResourceError' components: schemas: IssueEndUserAuthTokenRequest: properties: user_type: type: string const: end_user title: User Type description: The type of the user. user_id: type: string format: uuid title: User Id description: ID of the end user to issue the authorization token for. expiration: type: integer maximum: 315360000.0 minimum: 1.0 title: Expiration description: 'Token expiration in seconds (default: 1 day).' default: 86400 type: object required: - user_type - user_id title: IssueEndUserAuthTokenRequest PreconditionFailedError: properties: title: type: string title: Title description: Human-readable error message. detail: type: string title: Detail description: Detailed error message. full_detail: title: Full Detail description: Full error message with additional details, if available. type: string request_id: title: Request Id description: Request ID - for debugging purposes. type: string system_error_code: title: System Error Code description: An additional system error code in Fordefi. type: string type: object required: - title - detail title: PreconditionFailedError IssueAuthTokenResponse: $ref: '#/components/schemas/IssueEndUserAuthTokenResponse' title: IssueAuthTokenResponse ListAuthTokensResponse: properties: total: type: integer title: Total page: type: integer title: Page size: type: integer title: Size auth_tokens: items: $ref: '#/components/schemas/AuthToken' type: array title: Auth Tokens description: Authorization tokens list. type: object required: - total - page - size - auth_tokens title: ListAuthTokensResponse ResourceError: properties: title: type: string title: Title description: Human-readable error message. detail: type: string title: Detail description: Detailed error message. full_detail: title: Full Detail description: Full error message with additional details, if available. type: string request_id: title: Request Id description: Request ID - for debugging purposes. type: string resource: description: The type of resource. $ref: '#/components/schemas/Resource' type: object required: - title - detail title: ResourceError DefinedPreconditionError_IssueEndUserAuthTokenErrorType_: properties: title: type: string title: Title description: Human-readable error message. detail: type: string title: Detail description: Detailed error message. full_detail: title: Full Detail description: Full error message with additional details, if available. type: string request_id: title: Request Id description: Request ID - for debugging purposes. type: string system_error_code: title: System Error Code description: An additional system error code in Fordefi. type: string error_type: $ref: '#/components/schemas/IssueEndUserAuthTokenErrorType' type: object required: - title - detail title: DefinedPreconditionError[IssueEndUserAuthTokenErrorType] IssueEndUserAuthTokenErrorType: type: string enum: - cannot_issue_token_for_user_type title: IssueEndUserAuthTokenErrorType Resource: type: string enum: - user - user_change_proposals - user_group - user_group_change_proposal - vault - vault_address - vault_group - address_group - transaction - batch_transaction - path - keyset - auth_token - access_token - asset - asset_info - vault_derivation_path - blockchain - export - quote - import_keys_request - vault_address_account - exchange_asset_mapping - dapp_group - safe_address - audit_log title: Resource ValidationError: properties: title: type: string title: Title description: Human-readable error message. detail: items: $ref: '#/components/schemas/ValidationErrorDetail' type: array title: Detail full_detail: title: Full Detail description: Full error message with additional details, if available. type: string request_id: title: Request Id description: Request ID - for debugging purposes. type: string type: object required: - title - detail title: ValidationError AuthToken: properties: id: type: string format: uuid title: Id description: The unique identifier of the object in the Fordefi platform. created_at: type: string format: date-time title: Created At description: The date and time when the object was created. modified_at: type: string format: date-time title: Modified At description: The date and time when the object was last modified. Any change to any field of the resource is considered a modification. user_id: type: string format: uuid title: User Id description: ID of the end user the authorization token is issued for. expired_at: type: string format: date-time title: Expired At description: Token expiration time. user_type: type: string const: end_user title: User Type description: Type of the user the authorization token is issued for. type: object required: - id - created_at - modified_at - user_id - expired_at - user_type title: AuthToken IssueEndUserAuthTokenResponse: properties: id: type: string format: uuid title: Id description: The unique identifier of the object in the Fordefi platform. created_at: type: string format: date-time title: Created At description: The date and time when the object was created. modified_at: type: string format: date-time title: Modified At description: The date and time when the object was last modified. Any change to any field of the resource is considered a modification. user_id: type: string format: uuid title: User Id description: ID of the end user the authorization token is issued for. expired_at: type: string format: date-time title: Expired At description: Token expiration time. user_type: type: string const: end_user title: User Type description: The type of the user. access_token: type: string title: Access Token description: New access token for the user. type: object required: - id - created_at - modified_at - user_id - expired_at - user_type - access_token title: IssueEndUserAuthTokenResponse IssueAuthTokenRequest: oneOf: - $ref: '#/components/schemas/IssueEndUserAuthTokenRequest' discriminator: propertyName: user_type mapping: end_user: '#/components/schemas/IssueEndUserAuthTokenRequest' RateLimitError: properties: {} type: object title: RateLimitError BaseError: properties: title: type: string title: Title description: Human-readable error message. detail: type: string title: Detail description: Detailed error message. full_detail: title: Full Detail description: Full error message with additional details, if available. type: string request_id: title: Request Id description: Request ID - for debugging purposes. type: string type: object required: - title - detail title: BaseError ValidationErrorDetail: properties: loc: items: anyOf: - type: integer - type: string type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationErrorDetail securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT