arazzo: 1.0.1 info: title: Interswitch Issue And Activate Card summary: Issue a new card to a customer, set its PIN, then read back the activated card. description: >- Card issuance lifecycle on the Card 360 issuer-processor. The workflow creates a new Verve, debit, or prepaid card for a customer, sets the cardholder PIN using an ISO-9564 PIN block, and re-reads the card to confirm its status. The cardId from issuance is threaded into the PIN and read-back steps. All requests are Bearer-authenticated. version: 1.0.0 sourceDescriptions: - name: card360Api url: ../openapi/interswitch-card-360-api-openapi.yml type: openapi workflows: - workflowId: issue-and-activate-card summary: Create a card, set its PIN, and confirm activation. description: >- Issues a new card to a customer profile, sets the cardholder PIN, and reads back the card to confirm it is active. inputs: type: object required: - accessToken - customerId - cardType - productCode - pinBlock properties: accessToken: type: string description: Bearer access token from the Passport OAuth token endpoint. customerId: type: string description: Customer profile the card is issued to. cardType: type: string description: Card type to issue (debit, prepaid, or verve). productCode: type: string description: Card product code on the issuer. customerName: type: string description: Optional cardholder name to emboss. pinBlock: type: string description: ISO-9564 PIN block for the new card PIN. steps: - stepId: createCard description: Issue a new card to the customer profile. operationId: createCard parameters: - name: Authorization in: header value: Bearer $inputs.accessToken requestBody: contentType: application/json payload: customerId: $inputs.customerId cardType: $inputs.cardType productCode: $inputs.productCode customerName: $inputs.customerName successCriteria: - condition: $statusCode == 201 outputs: cardId: $response.body#/cardId cardPanMasked: $response.body#/cardPanMasked status: $response.body#/status - stepId: setPin description: Set the cardholder PIN on the newly issued card using the PIN block. operationId: setCardPin parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: cardId in: path value: $steps.createCard.outputs.cardId requestBody: contentType: application/json payload: pinBlock: $inputs.pinBlock successCriteria: - condition: $statusCode == 200 - stepId: confirmCard description: Read back the card to confirm its status after PIN set. operationId: getCard parameters: - name: Authorization in: header value: Bearer $inputs.accessToken - name: cardId in: path value: $steps.createCard.outputs.cardId successCriteria: - condition: $statusCode == 200 outputs: status: $response.body#/status cardScheme: $response.body#/cardScheme expiryMonth: $response.body#/expiryMonth expiryYear: $response.body#/expiryYear outputs: cardId: $steps.createCard.outputs.cardId cardStatus: $steps.confirmCard.outputs.status