Skip to main content
Version: 2.0

GraphGrid Payment

Platform Version 2.0

API Version 1.0

Introduction

GraphGrid Payment allows users to create and manage customer profiles.

API

This Payment API version is 1.0 and as such all endpoints are rooted at /1.0/. For example, http://localhost/1.0/payment
(requires auth) would be the base context for this Payment API under the GraphGrid API deployed at http://localhost.

Environment

Payment requires the following integrations:

  • ONgDB 1.0+

Customer and payment profiles in the graph

Creating a customer profile creates a UsageOrg node in the graph. This is an intermediary node between the organization or Org node. Graph data relating to customer profiles, and invoices are connected to the UsageOrg node. This is structured to keep the graph organized.

Diagram

Status

Check the status of GraphGrid Payment. Will return a 200 OK response if healthy.

Base URL: /1.0/payment/status
Method: GET

Request

curl --location --request GET "${API_BASE}/1.0/payment/status"

Response

{
"status": "OK"
}

Customer and payment profiles

Create Customer and Payment Profile for an Org

Creates a customer and payment profile for a specified organization. The organization can be specified by orgName or orgGrn.

Base URL: /1.0/payment/customerProfiles/{{orgName or orgGrn}}
Method: POST

curl --location --request POST "${API_BASE}/1.0/payment/customerProfiles/grn:gg:org:NhEIOcoF52xoeDJKU2ri8QP2FH1Y0BvZL5VH4hdLAulw" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"address": {
"firstName": "John",
"lastName": "Doe",
"company": "",
"streetAddress": "123 Main St.",
"city": "Bellevue",
"state": "WA",
"zip": "98004",
"country": "USA",
"phoneNumber": "000-000-0000",
"email": "my-emails@mail.com",
"faxNumber": ""
},
"creditCard": {
"cardNumber": "4111111111111111",
"expirationDate": "2023-12",
"cardCode": "123"
}
}'

Response

{
"message": "Account successfully created",
"status": "OK"
}

Graph schema

Diagram

Create a Customer and Payment Profile (unspecified Org)

Create a customer and payment profile without specifying an organization(Org).

Base URL: /1.0/payment/customerProfiles/{{UsageOrgName}}
Method: POST

ParameterDescription
UsageOrgNameThe name by which the user would like to call the UsageOrg node connected to the customer profile.
curl --location --request POST "${API_BASE}/1.0/payment/customerProfiles/new" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"address": {
"firstName": "John",
"lastName": "Doe",
"company": "",
"streetAddress": "123 Main St.",
"city": "Bellevue",
"state": "WA",
"zip": "98004",
"country": "USA",
"phoneNumber": "000-000-0000",
"faxNumber": "",
"email": "email@emails.com"
},
"creditCard": {
"cardNumber": "4111111111111111",
"expirationDate": "2023-11",
"cardCode" : "123"
}
}'

Response

{
"message": "Account successfully created",
"status": "OK"
}

Graph schema

Diagram

Add a Payment Profile to an existing Customer Profile

Add a paymentProfile to an existing customerProfile.

Base URL: http://localhost/1.0/payment/customerProfiles/{{OrgName/OrgGrn/UsageOrgGrn}}/paymentProfiles
Method: POST

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
curl --location --request POST "${API_BASE}/1.0/payment/customerProfiles/grn:gg:usageorg:9nulJFFNhdkDf2L1BXbtgOBOjOUPIPuYyFGbNrgn8pQZ/paymentProfiles" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"address": {
"firstName": "Jane",
"lastName": "Doe",
"company": "",
"streetAddress": "123 Main St.",
"city": "Bellevue",
"state": "WA",
"zip": "98004",
"country": "USA",
"phoneNumber": "000-000-0000",
"faxNumber": ""
},
"creditCard": {
"cardNumber": "4111111111111111",
"expirationDate": "2023-11",
"cardCode" : "123"
}
}'

Response

{
"message": "Success",
"status": "OK"
}

Graph schema

Diagram

Update Customer Profile

Update information on a customerProfile.

Base URL: http://localhost/1.0/payment/customerProfiles/{{OrgName/OrgGrn/UsageOrgGrn}}
Method: PUT

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
curl --location --request PUT "${API_BASE}/1.0/payment/customerProfiles/myOrg" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"email" : "HELLOWORLD@mail.com",
"address": "321 Ave"
}'

Response

{
"message": "Account successfully updated",
"status": "OK"
}

Get customer and payment profile

Retrieve data on a customer profile and its payment profiles.

Base URL: http://localhost/1.0/payment/customerProfiles/{{OrgName/OrgGrn/UsageOrgGrn}}
Method: GET

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
curl --location --request GET "${API_BASE}/1.0/payment/customerProfiles/MyOrg" \
--header "Authorization: Bearer ${BEARER_TOKEN}"

Response

{
"orgName": "MyOrg-OPi1eWLzcZLa",
"email": "HELLOWORLD@mail.com",
"paymentProfiles": [
{
"cardNumber": "XXXX1111",
"paymentProfileId": "511830354",
"address": {
"firstName": "Jane",
"lastName": "Doe",
"streetAddress": "123 Main St.",
"city": "Bellevue",
"state": "WA",
"zip": "98004",
"country": "USA",
"company": null,
"email": null,
"phoneNumber": "000-000-0000"
},
"email": null,
"expirationDate": "XXXX",
"cardType": "Visa",
"firstName": "Jane",
"lastName": "Doe",
"primary": false
},
{
"cardNumber": "XXXX1111",
"paymentProfileId": "511830233",
"address": {
"firstName": "John",
"lastName": "Doe",
"streetAddress": "123 Main St.",
"city": "Bellevue",
"state": "WA",
"zip": "98004",
"country": "USA",
"company": null,
"email": null,
"phoneNumber": "000-000-0000"
},
"email": null,
"expirationDate": "XXXX",
"cardType": "Visa",
"firstName": "John",
"lastName": "Doe",
"primary": true
}
]
}

Update Payment Profile

Update information for a payment profile.

Base URL: http://localhost/1.0/payment/customerProfiles/{{OrgName/OrgGrn/UsageOrgGrn}}/{{paymentProfileId}}
Method: PUT

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
paymentProfileIdThe numeric identification assigned to the payment profile.
curl --location --request PUT "${API_BASE}/1.0/payment/customerProfiles/MyOrg/paymentProfiles/511830233" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--data-raw '{
"address": {
"firstName": "John",
"lastName": "Doe",
"company": "GraphGrid",
"streetAddress": "1234 Sesame St.",
"city": "BK",
"state": "NY",
"zip": "90210",
"country": "USA",
"phoneNumber": "123-123-1234",
"faxNumber": ""
},
"creditCard": {
"cardNumber": "4111111111111111",
"expirationDate": "2023-11",
"cardCode" : "123"
}
}'

Response

{
"message": "Account successfully updated",
"status": "OK"
}

Email

Create Email for Org

Create an email for an organization(Org).

Base URL: http://localhost/1.0/payment/email/{{OrgGrn/OrgName/usageOrgGrn}}
Method: POST

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
curl --location --request POST "${API_BASE}/1.0/payment/email/grn:gg:org:Aiz7nuXfdcgoetQ1EWmcOAUXmYU7RIt4vQlikY2ToKp5" \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "my-emails@mail.com",
"emailRoles": [{
"name": "payment"
}],
"name": "test"
}'

Response

{
"emails": [
{
"id": 508,
"labels": [],
"enver": 0,
"createdAt": "2022-09-01T15:42:27.16Z",
"updatedAt": "2022-09-01T15:42:27.16Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"name": "my-emails@mail.com",
"usageOrgNode": {
"id": 522,
"labels": [],
"enver": 0,
"createdAt": "2022-09-01T15:42:27.183Z",
"updatedAt": "2022-09-01T15:42:27.183Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"grn": "grn:gg:usageorg:PCysblr21JkJtRF0sElMkFbOmJkzQw42DVo4IDi8PkLF",
"name": "default",
"accountId": "656708663687",
"excludeDefault": false,
"invoiceRateType": "fixed_rates",
"userNode": null,
"customerProfileNode": null,
"invoiceConfig": null,
"grnType": "usageorg",
"label": "UsageOrg"
},
"emailRoles": [
{
"id": 604,
"labels": ["Resource"],
"name": "payment",
"label": "EmailRole"
}
],
"label": "Email"
}
]
}

Graph schema

Diagram

Update Email

Update an organization's (Org) email.

Base URL: http://localhost/1.0/payment/email/{{OrgGrn/OrgName/usageOrgGrn}}/{{currentOrgEmail}}
Method: PUT

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
currentOrgEmailThe current email address of the organization to be updated.
curl --location --request PUT "${API_BASE}/1.0/payment/email/grn:gg:usageorg:QnG4NIvON81tbXgF9IWqGQ3lzAvMtqI9SR2lUflmhvEq/my-emails@mail.com" \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "my-new-email@mail.com",
"emailRoles": [{
"name": "payment"
}],
"name": "test"
}

Response

{
"emails": [
{
"id": 56,
"labels": ["GraphGridResource", "Resource"],
"enver": 0,
"createdAt": "2022-10-04T18:32:29.203Z",
"updatedAt": "2022-10-04T18:32:29.203Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"name": "my-new-email@mail.com",
"usageOrgNode": null,
"emailRoles": [
{
"id": 34,
"labels": ["GraphGridResource", "Resource"],
"name": "payment",
"label": "EmailRole"
}
],
"label": "Email"
}
]
}

Delete Email

Delete an organization's (Org) email.

Base URL: http://localhost/1.0/payment/email/{{OrgGrn/OrgName/usageOrgGrn}}/{{currentOrgEmail}}
Method: DELETE

ParameterDescription
ParameterDescription
------
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
currentOrgEmailThe current email address of the organization to be deleted.
curl --location --request DELETE "${API_BASE}/1.0/payment/email/grn:gg:org:jvaPm1O4dpmBKjfH2keCQnIAJBmRrzQUn4bewEYSyBqY/my-new-email@mail.com" \
--header "Authorization: Bearer ${BEARER_TOKEN}"

Response

200 OK

Invoices

Create Invoice

Create an invoice for an organization (Org).

Base URL: http://localhost/1.0/payment/email/{{OrgGrn/OrgName/usageOrgGrn}}/invoices
Method: POST

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
currentOrgEmailThe current email address of the organization to be updated.
curl --location --request POST "${API_BASE}/1.0/payment/invoice/default/invoices" \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 20.00,
"invoiceType": "in-person",
"billDate": "10/04/2022"
}'

Response

{
"orgInvoiceDetails": [
{
"invoice": {
"id": 84,
"labels": [],
"enver": 0,
"createdAt": "2022-10-04T18:59:46.181Z",
"updatedAt": "2022-10-04T18:59:46.181Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"grn": "grn:gg:orginvoice:rWKcgiQj0oVlVnfZSTly3dj1xAFhvz1cqUMKHRCSs9QN",
"invoiceId": null,
"fileName": null,
"approvedBy": null,
"state": "WAITING_FOR_PAYMENT",
"invoiceType": "in-person",
"amount": 20.0,
"date": "10/04/2022",
"dueDate": null,
"netPay": null,
"remainingAmount": 20.0,
"decimalPrecision": null,
"usageOrgNode": {
"id": 86,
"labels": ["GraphGridResource"],
"enver": 0,
"createdAt": "2022-10-04T17:12:44.106Z",
"updatedAt": "2022-10-04T17:12:44.106Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"grn": "grn:gg:usageorg:kGZT6ut4vfujeDfGupEQ5JvIEOQyBma6hNc8MtmzqZPX",
"name": "default",
"accountId": "540329263687",
"excludeDefault": false,
"invoiceRateType": "fixed_rates",
"userNode": null,
"customerProfileNode": null,
"invoiceConfig": null,
"grnType": "usageorg",
"label": "UsageOrg"
},
"invoiceNode": null,
"monthNode": null,
"grnType": "orginvoice",
"label": "OrgInvoice"
},
"paymentProfile": null,
"invoiceTransactions": null
}
],
"chargeCard": null,
"userGrnToBeCharged": null
}

Graph schema

Diagram

Get payment history / Invoice details

Base URL: http://localhost/1.0/payment/email/{{OrgGrn/OrgName/usageOrgGrn}}/invoices/{{invoiceGrn}}
Method: GET

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
invoiceGrnThe grn of the invoice to retrieve data for.
curl --location --request GET "${API_BASE}/1.0/payment/invoice/grn:gg:usageorg:kGZT6ut4vfujeDfGupEQ5JvIEOQyBma6hNc8MtmzqZPX/invoices/grn:gg:orginvoice:rWKcgiQj0oVlVnfZSTly3dj1xAFhvz1cqUMKHRCSs9QN" \
--header "Authorization: Bearer ${BEARER_TOKEN}"

Response

{
"invoice": {
"id": 84,
"labels": ["GraphGridResource"],
"enver": 0,
"createdAt": "2022-10-04T18:59:46.181Z",
"updatedAt": "2022-10-04T18:59:46.181Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"grn": "grn:gg:orginvoice:rWKcgiQj0oVlVnfZSTly3dj1xAFhvz1cqUMKHRCSs9QN",
"invoiceId": null,
"fileName": null,
"approvedBy": null,
"state": "WAITING_FOR_PAYMENT",
"invoiceType": "in-person",
"amount": 20.0,
"date": "value",
"dueDate": null,
"netPay": null,
"remainingAmount": 20.0,
"decimalPrecision": null,
"usageOrgNode": {
"id": 86,
"labels": ["GraphGridResource"],
"enver": 0,
"createdAt": "2022-10-04T17:12:44.106Z",
"updatedAt": "2022-10-04T17:12:44.106Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"grn": "grn:gg:usageorg:kGZT6ut4vfujeDfGupEQ5JvIEOQyBma6hNc8MtmzqZPX",
"name": "default",
"accountId": "540329263687",
"excludeDefault": false,
"invoiceRateType": "fixed_rates",
"userNode": null,
"customerProfileNode": null,
"invoiceConfig": null,
"grnType": "usageorg",
"label": "UsageOrg"
},
"invoiceNode": null,
"monthNode": null,
"grnType": "orginvoice",
"label": "OrgInvoice"
},
"paymentProfile": null,
"invoiceTransactions": null
}

Make Payment

Make a payment on an invoice.

Base URL: http://localhost/1.0/payment/invoice/{{OrgGrn/OrgName/usageOrgGrn}}/invoices/{{invoiceGrn}}/pay
Method: GET

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
invoiceGrnThe grn of the invoice to retrieve data for.
curl --location --request POST "${API_BASE}/1.0/payment/invoice/grn:gg:usageorg:kGZT6ut4vfujeDfGupEQ5JvIEOQyBma6hNc8MtmzqZPX/invoices/grn:gg:orginvoice:rWKcgiQj0oVlVnfZSTly3dj1xAFhvz1cqUMKHRCSs9QN/pay" \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 10.0,
"invoiceGrn": "grn:gg:orginvoice:rWKcgiQj0oVlVnfZSTly3dj1xAFhvz1cqUMKHRCSs9QN",
"customerProfileId": "507398890",
"customerPaymentProfileId": "511829792"
}
'

Response

{
"message": "Transaction successful :status is success",
"success": true,
"verificationCode": "40103831522"
}

Graph schema

Diagram

Get all invoice details for an organization

Get all invoices and transactions for an organization

Base URL: http://localhost/1.0/payment/invoice/{{OrgGrn/OrgName/usageOrgGrn}}
Method: GET

ParameterDescription
OrgNameThe name of the organization(Org) node.
OrgGrnThe grn of the UseageOrg node.
UsageOrgGrnThe grn of the UseageOrg node.
curl --location --request GET "${API_BASE}/1.0/payment/invoice/default" \
--header "Authorization: Bearer ${BEARER_TOKEN}"

Response

{
"orgInvoiceDetails": [
{
"invoice": {
"id": 84,
"labels": [
"GraphGridResource"
],
"enver": 0,
"createdAt": "2022-10-04T18:59:46.181Z",
"updatedAt": "2022-10-04T19:13:17.729Z",
"createdBy": "graphgrid",
"lastModifiedBy": "graphgrid",
"grn": "grn:gg:orginvoice:rWKcgiQj0oVlVnfZSTly3dj1xAFhvz1cqUMKHRCSs9QN",
"invoiceId": null,
"fileName": null,
"approvedBy": null,
"state": "WAITING_FOR_PAYMENT",
"invoiceType": "in-person",
"amount": 20.0,
"date": "value",
"dueDate": null,
"netPay": null,
"remainingAmount": 10.0,
"decimalPrecision": null,
"usageOrgNode": null,
"invoiceNode": null,
"monthNode": null,
"grnType": "orginvoice",
"label": "OrgInvoice"
},
"paymentProfile": {
"cardNumber": "XXXX1111",
"paymentProfileId": "511829792",
"address": {
"firstName": "John",
"lastName": "Doe",
"streetAddress": "123 Main St.",
"city": "Bellevue",
"state": "WA",
"zip": "98004",
"country": "USA",
"company": null,
"email": null,
"phoneNumber": "000-000-0000"
},
"email": null,
"expirationDate": "XXXX",
"cardType": "Visa",
"firstName": "John",
"lastName": "Doe",
"primary": true
},
"invoiceTransactions": [
{
"id": 85,
"labels": [
"GraphGridResource"
],
"enver": 0,
"createdAt": "2022-10-04T19:13:17.729Z",
"updatedAt": "2022-10-04T19:13:17.729Z",