diff --git a/404.html b/404.html index b80755c1d..dd03a434f 100644 --- a/404.html +++ b/404.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/_astro/tailwind.6adb2162.css b/_astro/tailwind.f44f3b76.css similarity index 75% rename from _astro/tailwind.6adb2162.css rename to _astro/tailwind.f44f3b76.css index 1bae3a73c..92ea345f4 100644 --- a/_astro/tailwind.6adb2162.css +++ b/_astro/tailwind.f44f3b76.css @@ -1 +1 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,Sans-Serif}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(a code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre code):not(:where([class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-slate{--tw-prose-body: #334155;--tw-prose-headings: #0f172a;--tw-prose-lead: #475569;--tw-prose-links: #0f172a;--tw-prose-bold: #0f172a;--tw-prose-counters: #64748b;--tw-prose-bullets: #cbd5e1;--tw-prose-hr: #e2e8f0;--tw-prose-quotes: #0f172a;--tw-prose-quote-borders: #e2e8f0;--tw-prose-captions: #64748b;--tw-prose-code: #0f172a;--tw-prose-pre-code: #e2e8f0;--tw-prose-pre-bg: #1e293b;--tw-prose-th-borders: #cbd5e1;--tw-prose-td-borders: #e2e8f0;--tw-prose-invert-body: #cbd5e1;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #94a3b8;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #94a3b8;--tw-prose-invert-bullets: #475569;--tw-prose-invert-hr: #334155;--tw-prose-invert-quotes: #f1f5f9;--tw-prose-invert-quote-borders: #334155;--tw-prose-invert-captions: #94a3b8;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #cbd5e1;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #475569;--tw-prose-invert-td-borders: #334155}.type-display{font-size:2.25rem;line-height:2.5rem;font-weight:300;line-height:1.25;letter-spacing:-.05em;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}@media (min-width: 768px){.type-display{font-size:3rem;line-height:1}}@media (min-width: 1024px){.type-display{font-size:3.75rem;line-height:1}}.type-headline-2{font-size:1.5rem;line-height:2rem;font-weight:400;line-height:1.25;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}@media (min-width: 768px){.type-headline-2{font-size:1.875rem;line-height:2.25rem}}@media (min-width: 1024px){.type-headline-2{font-size:2.25rem;line-height:2.5rem}}.type-headline-4{font-size:1.125rem;line-height:1.75rem;font-weight:500;line-height:1.375;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}@media (min-width: 768px){.type-headline-4{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.type-headline-4{font-size:1.5rem;line-height:2rem}}.type-body-1{font-size:1.125rem;line-height:1.75rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-body-1{font-size:1.25rem;line-height:1.75rem}}.type-body-2{font-size:1rem;line-height:1.5rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-body-2{font-size:1.125rem;line-height:1.75rem}}.type-body-3{font-size:.875rem;line-height:1.25rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-body-3{font-size:1rem;line-height:1.5rem}}.type-subtitle-1{font-size:1rem;line-height:1.5rem;font-weight:500;line-height:1.375;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-subtitle-1{font-size:1.25rem;line-height:1.75rem}}.type-subtitle-2{font-size:.875rem;line-height:1.25rem;font-weight:500;line-height:1.375;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-subtitle-2{font-size:1.125rem;line-height:1.75rem}}.type-caption-2{font-size:.75rem;line-height:1rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-caption-2{font-size:.875rem;line-height:1.25rem}}.type-overline{font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;line-height:1.5;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 768px){.type-overline{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.type-overline{font-size:.875rem;line-height:1.25rem}}.type-display b,.type-headline-2 b{font-weight:600}.type-headline-4 b{font-weight:700}.type-body-1 b,.type-body-2 b,.type-body-3 b{font-weight:600}.type-subtitle-1 b{font-weight:700}.type-subtitle-2 b,.type-caption-2 b{font-weight:600}.type-overline b{font-weight:700}.btn,button{display:flex;align-items:center}.btn>:not([hidden])~:not([hidden]),button>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.btn,button{border-radius:9999px;--tw-ring-opacity: 1;--tw-ring-color: rgb(255 92 0 / var(--tw-ring-opacity));padding:.5rem 1rem}.btn:focus,button:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.btn,button{cursor:pointer;background-position:center;transition:background .3s}.btn-tertiary.active,.btn-tertiary:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity))}button .icon{display:inline-block;height:1.25rem;width:1.25rem}.btn-xs .icon{display:inline-block;height:1rem;width:1rem}.btn-xl .icon{display:inline-block;height:1.5rem;width:1.5rem}*:not(pre)>code{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity));padding:1px 3px;font-size:.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.icon-sm{display:inline-block;height:1rem;width:1rem}.icon-md{display:inline-block;height:1.25rem;width:1.25rem}.icon-lg{display:inline-block;height:1.5rem;width:1.5rem}.icon-2xl{display:inline-block;height:2rem;width:2rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.left-4{left:1rem}.right-6{right:1.5rem}.bottom-6{bottom:1.5rem}.z-10{z-index:10}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-0{margin-top:0;margin-bottom:0}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-32{margin-top:8rem;margin-bottom:8rem}.ml-7{margin-left:1.75rem}.mt-16{margin-top:4rem}.mb-8{margin-bottom:2rem}.mt-\[10vh\]{margin-top:10vh}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.ml-2{margin-left:.5rem}.mr-6{margin-right:1.5rem}.mb-2{margin-bottom:.5rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mb-4{margin-bottom:1rem}.ml-3{margin-left:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mb-12{margin-bottom:3rem}.mt-12{margin-top:3rem}.mb-9{margin-bottom:2.25rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-screen{height:100vh}.h-0{height:0px}.h-16{height:4rem}.h-10{height:2.5rem}.h-6{height:1.5rem}.h-full{height:100%}.h-32{height:8rem}.h-3{height:.75rem}.h-48{height:12rem}.h-24{height:6rem}.max-h-96{max-height:24rem}.max-h-\[65vh\]{max-height:65vh}.max-h-72{max-height:18rem}.min-h-full{min-height:100%}.w-screen{width:100vw}.w-full{width:100%}.w-16{width:4rem}.w-6{width:1.5rem}.w-min{width:-moz-min-content;width:min-content}.w-56{width:14rem}.min-w-0{min-width:0px}.max-w-3xl{max-width:48rem}.max-w-none{max-width:none}.max-w-2xl{max-width:42rem}.max-w-\[720px\]{max-width:720px}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-y-full{--tw-translate-y: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.scroll-mt-32{scroll-margin-top:8rem}.scroll-mt-20{scroll-margin-top:5rem}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-y-10{row-gap:2.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.divide-zinc-900\/5>:not([hidden])~:not([hidden]){border-color:#18181b0d}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-l-2{border-left-width:2px}.border-none{border-style:none}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-outline-opaque{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity))}.border-cyan-400{--tw-border-opacity: 1;border-color:rgb(34 211 238 / var(--tw-border-opacity))}.border-orange-400{--tw-border-opacity: 1;border-color:rgb(251 146 60 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-outline-inverse-opaque{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-brand-accent{--tw-border-opacity: 1;border-color:rgb(255 92 0 / var(--tw-border-opacity))}.border-interactive-tertiary{--tw-border-opacity: 1;border-color:rgb(249 250 251 / var(--tw-border-opacity))}.bg-surface-primary,.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-brand-primary{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-surface-accent-light{--tw-bg-opacity: 1;background-color:rgb(250 244 231 / var(--tw-bg-opacity))}.bg-surface-accent{--tw-bg-opacity: 1;background-color:rgb(198 68 14 / var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity: 1;background-color:rgb(207 250 254 / var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity))}.bg-surface-tertiary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-orange-800{--tw-bg-opacity: 1;background-color:rgb(154 52 18 / var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity: 1;background-color:rgb(159 18 57 / var(--tw-bg-opacity))}.bg-surface-inverse-secondary{--tw-bg-opacity: 1;background-color:rgb(54 54 54 / var(--tw-bg-opacity))}.bg-surface-inverse-tertiary{--tw-bg-opacity: 1;background-color:rgb(79 79 79 / var(--tw-bg-opacity))}.bg-surface-inverse-primary{--tw-bg-opacity: 1;background-color:rgb(35 35 35 / var(--tw-bg-opacity))}.bg-interactive-secondary{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-interactive-secondary-active{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-surface-secondary{--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity))}.bg-\[\#174B33\]{--tw-bg-opacity: 1;background-color:rgb(23 75 51 / var(--tw-bg-opacity))}.bg-interactive-primary{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-interactive-quaternary{--tw-bg-opacity: 1;background-color:rgb(255 92 0 / var(--tw-bg-opacity))}.bg-interactive-tertiary{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.bg-\[url\(\'\/countryside\.jpg\'\)\]{background-image:url(/countryside.jpg)}.bg-cover{background-size:cover}.bg-bottom{background-position:bottom}.object-cover{-o-object-fit:cover;object-fit:cover}.p-4{padding:1rem}.p-0{padding:0}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-0{padding-top:0;padding-bottom:0}.px-0{padding-left:0;padding-right:0}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-16{padding-top:4rem;padding-bottom:4rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-16{padding-left:4rem;padding-right:4rem}.pt-16{padding-top:4rem}.pt-5{padding-top:1.25rem}.pb-4{padding-bottom:1rem}.pr-6{padding-right:1.5rem}.pt-4{padding-top:1rem}.pb-16{padding-bottom:4rem}.pl-12{padding-left:3rem}.pr-1{padding-right:.25rem}.pl-16{padding-left:4rem}.pl-4{padding-left:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Inter,Sans-Serif}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-\[10px\]{font-size:10px}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-bold{font-weight:700}.capitalize{text-transform:capitalize}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-content-on-color{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-content-tertiary{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-content-accent{--tw-text-opacity: 1;color:rgb(198 68 14 / var(--tw-text-opacity))}.text-content-primary{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-content-inverse-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-content-secondary{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.text-content-inverse-secondary{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-brand-accent{--tw-text-opacity: 1;color:rgb(255 92 0 / var(--tw-text-opacity))}.text-interactive-tertiary{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.text-interactive-secondary{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.bg-blend-overlay{background-blend-mode:overlay}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-focus-ring{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 92 0 / var(--tw-ring-opacity))}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.ring-offset-8{--tw-ring-offset-width: 8px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-150{transition-delay:.15s}.delay-200{transition-delay:.2s}.duration-150{transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-200{transition-duration:.2s}.duration-100{transition-duration:.1s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.p-squish-2{padding:.5rem 1rem}.desktop-gutters{margin-left:auto;margin-right:auto;width:100%;max-width:72rem}.first\:pt-0:first-child{padding-top:0}.last\:pb-0:last-child{padding-bottom:0}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-content-primary:hover{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-interactive-secondary-hover:hover{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.hover\:bg-interactive-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.hover\:bg-interactive-quaternary-hover:hover{--tw-bg-opacity: 1;background-color:rgb(241 165 31 / var(--tw-bg-opacity))}.hover\:text-content-primary:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-interactive-tertiary-active:hover{--tw-text-opacity: 1;color:rgb(250 235 201 / var(--tw-text-opacity))}.hover\:text-interactive-secondary-hover:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:no-underline:hover{text-decoration-line:none}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-inset:focus{--tw-ring-inset: inset}.active\:scale-100:active{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-interactive-quaternary-active:active{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.active\:transition-none:active{transition-property:none}.group:hover .group-hover\:bg-interactive-secondary-hover{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.group:hover .group-hover\:text-content-secondary{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.prose-headings\:font-normal :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose] *))){font-weight:400}.prose-h2\:mt-8 :is(:where(h2):not(:where([class~=not-prose] *))){margin-top:2rem}.prose-h2\:scroll-mt-16 :is(:where(h2):not(:where([class~=not-prose] *))){scroll-margin-top:4rem}.prose-h2\:border-t :is(:where(h2):not(:where([class~=not-prose] *))){border-top-width:1px}.prose-h2\:pt-8 :is(:where(h2):not(:where([class~=not-prose] *))){padding-top:2rem}.prose-h3\:scroll-mt-20 :is(:where(h3):not(:where([class~=not-prose] *))){scroll-margin-top:5rem}.prose-h4\:scroll-mt-20 :is(:where(h4):not(:where([class~=not-prose] *))){scroll-margin-top:5rem}.prose-a\:text-content-primary :is(:where(a):not(:where([class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose] *))):hover{text-decoration-line:none}.prose-img\:mx-auto :is(:where(img):not(:where([class~=not-prose] *))){margin-left:auto;margin-right:auto}.prose-img\:mb-8 :is(:where(img):not(:where([class~=not-prose] *))){margin-bottom:2rem}.prose-img\:object-contain :is(:where(img):not(:where([class~=not-prose] *))){-o-object-fit:contain;object-fit:contain}.prose-lead\:text-slate-500 :is(:where([class~=lead]):not(:where([class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}@media (min-width: 640px){.sm\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 768px){.md\:fixed{position:fixed}.md\:order-2{order:2}.md\:order-1{order:1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:mr-4{margin-right:1rem}.md\:mt-0{margin-top:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-4{height:1rem}.md\:h-full{height:100%}.md\:w-80{width:20rem}.md\:w-4{width:1rem}.md\:w-64{width:16rem}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-12{gap:3rem}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.md\:rounded-lg{border-radius:.5rem}.md\:border{border-width:1px}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pr-0{padding-right:0}.md\:pl-64{padding-left:16rem}.md\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media (min-width: 1024px){.lg\:max-w-none{max-width:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:gap-6{gap:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:sticky{position:sticky}.xl\:top-24{top:6rem}.xl\:top-\[4\.5rem\]{top:4.5rem}.xl\:block{display:block}.xl\:h-\[calc\(100vh-10rem\)\]{height:calc(100vh - 10rem)}.xl\:w-80{width:20rem}.xl\:max-w-none{max-width:none}.xl\:flex-none{flex:none}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:py-16{padding-top:4rem;padding-bottom:4rem}.xl\:pl-80{padding-left:20rem}.xl\:pt-16{padding-top:4rem}.xl\:pr-6{padding-right:1.5rem}}.\[\&\>\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\:last-child\]\:mb-0>:last-child{margin-bottom:0} +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,Sans-Serif}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(a code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre code):not(:where([class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-slate{--tw-prose-body: #334155;--tw-prose-headings: #0f172a;--tw-prose-lead: #475569;--tw-prose-links: #0f172a;--tw-prose-bold: #0f172a;--tw-prose-counters: #64748b;--tw-prose-bullets: #cbd5e1;--tw-prose-hr: #e2e8f0;--tw-prose-quotes: #0f172a;--tw-prose-quote-borders: #e2e8f0;--tw-prose-captions: #64748b;--tw-prose-code: #0f172a;--tw-prose-pre-code: #e2e8f0;--tw-prose-pre-bg: #1e293b;--tw-prose-th-borders: #cbd5e1;--tw-prose-td-borders: #e2e8f0;--tw-prose-invert-body: #cbd5e1;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #94a3b8;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #94a3b8;--tw-prose-invert-bullets: #475569;--tw-prose-invert-hr: #334155;--tw-prose-invert-quotes: #f1f5f9;--tw-prose-invert-quote-borders: #334155;--tw-prose-invert-captions: #94a3b8;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #cbd5e1;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #475569;--tw-prose-invert-td-borders: #334155}.type-display{font-size:2.25rem;line-height:2.5rem;font-weight:300;line-height:1.25;letter-spacing:-.05em;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}@media (min-width: 768px){.type-display{font-size:3rem;line-height:1}}@media (min-width: 1024px){.type-display{font-size:3.75rem;line-height:1}}.type-headline-2{font-size:1.5rem;line-height:2rem;font-weight:400;line-height:1.25;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}@media (min-width: 768px){.type-headline-2{font-size:1.875rem;line-height:2.25rem}}@media (min-width: 1024px){.type-headline-2{font-size:2.25rem;line-height:2.5rem}}.type-headline-4{font-size:1.125rem;line-height:1.75rem;font-weight:500;line-height:1.375;letter-spacing:-.025em;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}@media (min-width: 768px){.type-headline-4{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.type-headline-4{font-size:1.5rem;line-height:2rem}}.type-body-1{font-size:1.125rem;line-height:1.75rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-body-1{font-size:1.25rem;line-height:1.75rem}}.type-body-2{font-size:1rem;line-height:1.5rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-body-2{font-size:1.125rem;line-height:1.75rem}}.type-body-3{font-size:.875rem;line-height:1.25rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-body-3{font-size:1rem;line-height:1.5rem}}.type-subtitle-1{font-size:1rem;line-height:1.5rem;font-weight:500;line-height:1.375;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-subtitle-1{font-size:1.25rem;line-height:1.75rem}}.type-subtitle-2{font-size:.875rem;line-height:1.25rem;font-weight:500;line-height:1.375;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-subtitle-2{font-size:1.125rem;line-height:1.75rem}}.type-caption-2{font-size:.75rem;line-height:1rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}@media (min-width: 1024px){.type-caption-2{font-size:.875rem;line-height:1.25rem}}.type-overline{font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;line-height:1.5;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}@media (min-width: 768px){.type-overline{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.type-overline{font-size:.875rem;line-height:1.25rem}}.type-display b,.type-headline-2 b{font-weight:600}.type-headline-4 b{font-weight:700}.type-body-1 b,.type-body-2 b,.type-body-3 b{font-weight:600}.type-subtitle-1 b{font-weight:700}.type-subtitle-2 b,.type-caption-2 b{font-weight:600}.type-overline b{font-weight:700}.btn,button{display:flex;align-items:center}.btn>:not([hidden])~:not([hidden]),button>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.btn,button{border-radius:9999px;--tw-ring-opacity: 1;--tw-ring-color: rgb(255 92 0 / var(--tw-ring-opacity));padding:.5rem 1rem}.btn:focus,button:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.btn,button{cursor:pointer;background-position:center;transition:background .3s}.btn-tertiary.active,.btn-tertiary:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity))}button .icon{display:inline-block;height:1.25rem;width:1.25rem}.btn-xs .icon{display:inline-block;height:1rem;width:1rem}.btn-xl .icon{display:inline-block;height:1.5rem;width:1.5rem}*:not(pre)>code{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity));padding:1px 3px;font-size:.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.icon-sm{display:inline-block;height:1rem;width:1rem}.icon-md{display:inline-block;height:1.25rem;width:1.25rem}.icon-lg{display:inline-block;height:1.5rem;width:1.5rem}.icon-2xl{display:inline-block;height:2rem;width:2rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.left-4{left:1rem}.right-6{right:1.5rem}.bottom-6{bottom:1.5rem}.z-10{z-index:10}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-0{margin-top:0;margin-bottom:0}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-32{margin-top:8rem;margin-bottom:8rem}.ml-7{margin-left:1.75rem}.mt-16{margin-top:4rem}.mb-8{margin-bottom:2rem}.mt-\[10vh\]{margin-top:10vh}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.ml-2{margin-left:.5rem}.mr-6{margin-right:1.5rem}.mb-2{margin-bottom:.5rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mb-4{margin-bottom:1rem}.ml-3{margin-left:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mb-12{margin-bottom:3rem}.mt-12{margin-top:3rem}.mb-9{margin-bottom:2.25rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-screen{height:100vh}.h-0{height:0px}.h-16{height:4rem}.h-10{height:2.5rem}.h-6{height:1.5rem}.h-full{height:100%}.h-32{height:8rem}.h-3{height:.75rem}.h-48{height:12rem}.h-24{height:6rem}.max-h-96{max-height:24rem}.max-h-\[65vh\]{max-height:65vh}.max-h-72{max-height:18rem}.min-h-full{min-height:100%}.w-screen{width:100vw}.w-full{width:100%}.w-16{width:4rem}.w-6{width:1.5rem}.w-min{width:-moz-min-content;width:min-content}.w-56{width:14rem}.min-w-0{min-width:0px}.max-w-3xl{max-width:48rem}.max-w-none{max-width:none}.max-w-2xl{max-width:42rem}.max-w-\[720px\]{max-width:720px}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-y-full{--tw-translate-y: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.scroll-mt-32{scroll-margin-top:8rem}.scroll-mt-20{scroll-margin-top:5rem}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-y-10{row-gap:2.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.divide-zinc-900\/5>:not([hidden])~:not([hidden]){border-color:#18181b0d}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-l-2{border-left-width:2px}.border-none{border-style:none}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-outline-opaque{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity))}.border-cyan-400{--tw-border-opacity: 1;border-color:rgb(34 211 238 / var(--tw-border-opacity))}.border-orange-400{--tw-border-opacity: 1;border-color:rgb(251 146 60 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-cyan-500{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-outline-inverse-opaque{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-brand-accent{--tw-border-opacity: 1;border-color:rgb(255 92 0 / var(--tw-border-opacity))}.border-interactive-tertiary{--tw-border-opacity: 1;border-color:rgb(249 250 251 / var(--tw-border-opacity))}.bg-surface-primary,.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-brand-primary{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-surface-accent-light{--tw-bg-opacity: 1;background-color:rgb(250 244 231 / var(--tw-bg-opacity))}.bg-surface-accent{--tw-bg-opacity: 1;background-color:rgb(198 68 14 / var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity))}.bg-cyan-100{--tw-bg-opacity: 1;background-color:rgb(207 250 254 / var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity))}.bg-surface-tertiary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-orange-800{--tw-bg-opacity: 1;background-color:rgb(154 52 18 / var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity: 1;background-color:rgb(159 18 57 / var(--tw-bg-opacity))}.bg-surface-inverse-secondary{--tw-bg-opacity: 1;background-color:rgb(54 54 54 / var(--tw-bg-opacity))}.bg-surface-inverse-tertiary{--tw-bg-opacity: 1;background-color:rgb(79 79 79 / var(--tw-bg-opacity))}.bg-surface-inverse-primary{--tw-bg-opacity: 1;background-color:rgb(35 35 35 / var(--tw-bg-opacity))}.bg-interactive-secondary{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-interactive-secondary-active{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-surface-secondary{--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity))}.bg-\[\#174B33\]{--tw-bg-opacity: 1;background-color:rgb(23 75 51 / var(--tw-bg-opacity))}.bg-interactive-primary{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-interactive-quaternary{--tw-bg-opacity: 1;background-color:rgb(255 92 0 / var(--tw-bg-opacity))}.bg-interactive-tertiary{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.bg-\[url\(\'\/countryside\.jpg\'\)\]{background-image:url(/countryside.jpg)}.bg-cover{background-size:cover}.bg-bottom{background-position:bottom}.object-cover{-o-object-fit:cover;object-fit:cover}.p-4{padding:1rem}.p-0{padding:0}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-0{padding-top:0;padding-bottom:0}.px-0{padding-left:0;padding-right:0}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-16{padding-top:4rem;padding-bottom:4rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-16{padding-left:4rem;padding-right:4rem}.pt-16{padding-top:4rem}.pt-5{padding-top:1.25rem}.pb-4{padding-bottom:1rem}.pr-6{padding-right:1.5rem}.pt-4{padding-top:1rem}.pb-16{padding-bottom:4rem}.pl-12{padding-left:3rem}.pr-1{padding-right:.25rem}.pl-16{padding-left:4rem}.pl-4{padding-left:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Inter,Sans-Serif}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-\[10px\]{font-size:10px}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-bold{font-weight:700}.capitalize{text-transform:capitalize}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-content-on-color{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-content-tertiary{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-content-accent{--tw-text-opacity: 1;color:rgb(198 68 14 / var(--tw-text-opacity))}.text-content-primary{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-content-inverse-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-content-secondary{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.text-content-inverse-secondary{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-brand-accent{--tw-text-opacity: 1;color:rgb(255 92 0 / var(--tw-text-opacity))}.text-interactive-tertiary{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.text-interactive-secondary{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.bg-blend-overlay{background-blend-mode:overlay}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-focus-ring{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 92 0 / var(--tw-ring-opacity))}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.ring-offset-8{--tw-ring-offset-width: 8px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-150{transition-delay:.15s}.duration-150{transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-200{transition-duration:.2s}.duration-100{transition-duration:.1s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.p-squish-2{padding:.5rem 1rem}.desktop-gutters{margin-left:auto;margin-right:auto;width:100%;max-width:72rem}.first\:pt-0:first-child{padding-top:0}.last\:pb-0:last-child{padding-bottom:0}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-content-primary:hover{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-interactive-secondary-hover:hover{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.hover\:bg-interactive-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.hover\:bg-interactive-quaternary-hover:hover{--tw-bg-opacity: 1;background-color:rgb(241 165 31 / var(--tw-bg-opacity))}.hover\:text-content-primary:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-interactive-tertiary-active:hover{--tw-text-opacity: 1;color:rgb(250 235 201 / var(--tw-text-opacity))}.hover\:text-interactive-secondary-hover:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:no-underline:hover{text-decoration-line:none}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-inset:focus{--tw-ring-inset: inset}.active\:scale-100:active{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-interactive-quaternary-active:active{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.active\:transition-none:active{transition-property:none}.group:hover .group-hover\:bg-interactive-secondary-hover{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.group:hover .group-hover\:text-content-secondary{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.prose-headings\:font-normal :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose] *))){font-weight:400}.prose-h2\:mt-8 :is(:where(h2):not(:where([class~=not-prose] *))){margin-top:2rem}.prose-h2\:scroll-mt-16 :is(:where(h2):not(:where([class~=not-prose] *))){scroll-margin-top:4rem}.prose-h2\:border-t :is(:where(h2):not(:where([class~=not-prose] *))){border-top-width:1px}.prose-h2\:pt-8 :is(:where(h2):not(:where([class~=not-prose] *))){padding-top:2rem}.prose-h3\:scroll-mt-20 :is(:where(h3):not(:where([class~=not-prose] *))){scroll-margin-top:5rem}.prose-h4\:scroll-mt-20 :is(:where(h4):not(:where([class~=not-prose] *))){scroll-margin-top:5rem}.prose-a\:text-content-primary :is(:where(a):not(:where([class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose] *))):hover{text-decoration-line:none}.prose-img\:mx-auto :is(:where(img):not(:where([class~=not-prose] *))){margin-left:auto;margin-right:auto}.prose-img\:mb-8 :is(:where(img):not(:where([class~=not-prose] *))){margin-bottom:2rem}.prose-img\:object-contain :is(:where(img):not(:where([class~=not-prose] *))){-o-object-fit:contain;object-fit:contain}.prose-lead\:text-slate-500 :is(:where([class~=lead]):not(:where([class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}@media (min-width: 640px){.sm\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 768px){.md\:fixed{position:fixed}.md\:order-2{order:2}.md\:order-1{order:1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:mr-4{margin-right:1rem}.md\:mt-0{margin-top:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-4{height:1rem}.md\:h-full{height:100%}.md\:w-80{width:20rem}.md\:w-4{width:1rem}.md\:w-64{width:16rem}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-12{gap:3rem}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.md\:rounded-lg{border-radius:.5rem}.md\:border{border-width:1px}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pr-0{padding-right:0}.md\:pl-64{padding-left:16rem}.md\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media (min-width: 1024px){.lg\:max-w-none{max-width:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:gap-6{gap:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:sticky{position:sticky}.xl\:top-24{top:6rem}.xl\:top-\[4\.5rem\]{top:4.5rem}.xl\:block{display:block}.xl\:h-\[calc\(100vh-10rem\)\]{height:calc(100vh - 10rem)}.xl\:w-80{width:20rem}.xl\:max-w-none{max-width:none}.xl\:flex-none{flex:none}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:py-16{padding-top:4rem;padding-bottom:4rem}.xl\:pl-80{padding-left:20rem}.xl\:pt-16{padding-top:4rem}.xl\:pr-6{padding-right:1.5rem}}.\[\&\>\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\:last-child\]\:mb-0>:last-child{margin-bottom:0} diff --git a/api/account-memberships/index.html b/api/account-memberships/index.html index 2d0a41da9..7a132c6af 100644 --- a/api/account-memberships/index.html +++ b/api/account-memberships/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Account Memberships

An Account Membership represents a user having access to a Centrapay +

Account Memberships

An Account Membership represents a user having access to a Centrapay Account  API . An Account Membership has a role which grants the user access to some or all of the operations and resources within the account.

Account Membership Model

@@ -26,16 +26,15 @@

Attributes

  • accountId

    string

    The id of the Account  API  the Membership is scoped to.

  • accountType

    string

    The type of the Account  API  the Membership is scoped to.

  • accountName

    string

    The name of the Account  API  the Membership is scoped to.

  • userId

    string

    The id of the user the Membership belongs to.

  • role

    string

    The role governing Membership permissions.

  • subject

    crn

    User or API key resource name for the membership.

  • createdAt

    timestamp

    When the Membership was created.

  • createdBy

    crn

    Resource that created the member.

  • modifiedAt

    timestamp

    When the Membership was last modified.

  • modifiedBy

    crn

    Resource that last modified the account member.

  • testAccount

    boolean

    A flag which is present if the Account  API  is test.

  • firstName

    string

    First name of the user the membership belongs to.

  • lastName

    string

    Last name of the user the membership belongs to.

  • email

    string

    Email of the user the membership belongs to.


-
POST/api/accounts/{accountId}/members

Add Member experimental

This endpoint allows you to add or update the membership of a user to an account.

Attributes

  • userId

    stringrequired

    The id of the user the Membership belongs to.

  • role

    stringrequired

    The role governing Membership permissions.

Request
POST/api/accounts/{accountId}/members
    curl -X POST https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/members \
+
POST/api/accounts/{accountId}/members

Add Member experimental

This endpoint allows you to add or update the membership of a user to an account.

Attributes

  • userId

    stringrequired

    The id of the user the Membership belongs to.

  • role

    stringrequired

    The role governing Membership permissions.

Request
POST/api/accounts/{accountId}/members
curl -X POST https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/members \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "userId": "da75ad90-9a5b-4df0-8374-f48b3a8fbfcc",
     "role": "account-owner"
-  }'
-  
Response
    {
+
Response
{
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "accountType": "org",
   "userId": "da75ad90-9a5b-4df0-8374-f48b3a8fbfcc",
@@ -44,16 +43,14 @@
   "createdAt": "2020-06-12T01:17:46.499Z",
   "modifiedAt": "2020-06-12T01:17:46.499Z",
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
GET/api/accounts/{accountId}/members

List members

This endpoint allows you to retrieve the list memberships to an account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/members
    curl https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/members \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "accountName": "Centrapay Cafe",
     "accountType": "org",
@@ -76,38 +73,33 @@
     "lastName": "Doe",
     "email": "jane.doe@centrapay.com"
   }
-]
-  

-
DELETE/api/accounts/{accountId}/members/{userId}

Revoke Member

This endpoint allows you to revoke a users membership to an account.

Attributes

No attributes.

Errors

  • LAST_OWNER_NOT_REVOKABLE

    403

    The last remaining membership to an account cannot be revoked.

Request
DELETE/api/accounts/{accountId}/members/{userId}
    curl -X DELETE https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/members/45dwes-rf4h55-tyf45s-6st4gd \
-  -H "X-Api-Key: $api_key"
-  

-
GET/api/account-memberships

List Account Memberships for Authenticated Subject

This endpoint allows you to retrieve the accounts that the authenticated subject is a member of.

Attributes

No attributes.

Request
GET/api/account-memberships
    curl https://service.centrapay.com/api/account-memberships \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "accountName": "Centrapay Tea Warehouse",
     "accountId": "5uooxSens6ykJaim1Cu1Q5",
     "accountType": "org",
     "role": "account-owner"
   }
-]
-  

-
GET/api/users/{userId}/account-memberships

List Account Memberships for a User

This endpoint allows you to retrieve the accounts that a user is a member of.

Attributes

No attributes.

Request
GET/api/users/{userId}/account-memberships
    curl https://service.centrapay.com/api/users/1234/account-memberships \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "accountName": "Centrapay Cafe",
     "accountId": "Jaim1Cu1Q55uooxSens6yk",
@@ -120,7 +112,6 @@
     "accountType": "org",
     "role": "account-owner"
   }
-]
-  
\ No newline at end of file diff --git a/api/accounts/index.html b/api/accounts/index.html index 32f424ab5..164a87039 100644 --- a/api/accounts/index.html +++ b/api/accounts/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Accounts

An Account represents a permission boundary around Centrapay resources. +

Accounts

An Account represents a permission boundary around Centrapay resources. Accounts can have API Keys  API  and Account Memberships  API  which grant access to the resources.

Accounts are classified as either “individual” or “org”. Individual accounts can only have a single member and Centrapay users can only be a member of a single @@ -30,16 +30,15 @@

Attributes

  • name

    string

    The name of the Subscription.


-
POST/api/accounts

Create an Account

This endpoint allows you to create an Account.

Attributes

  • name

    stringrequired

    The name of the Account.

  • type

    stringrequired

    Account type, must be either “org” or “individual”.

  • owner

    string

    Id of user to add as member with “account-owner” role.

  • test

    boolean

    A flag indicating if the Account is for testing.

  • region

    string

    The region that the Account will operate in. Required for ‘org’ Accounts, not allowed for ‘individual’ Accounts. Can be “NZ”, “AU”, or “US”.

Request
POST/api/accounts
    curl -X POST https://service.centrapay.com/api/accounts \
+
POST/api/accounts

Create an Account

This endpoint allows you to create an Account.

Attributes

  • name

    stringrequired

    The name of the Account.

  • type

    stringrequired

    Account type, must be either “org” or “individual”.

  • owner

    string

    Id of user to add as member with “account-owner” role.

  • test

    boolean

    A flag indicating if the Account is for testing.

  • region

    string

    The region that the Account will operate in. Required for ‘org’ Accounts, not allowed for ‘individual’ Accounts. Can be “NZ”, “AU”, or “US”.

Request
POST/api/accounts
curl -X POST https://service.centrapay.com/api/accounts \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "name": "Centrapay Cafe",
     "type": "org"
-  }'
-  
Response
    {
+
Response
{
   "id": "Jaim1Cu1Q55uooxSens6yk",
   "name": "Centrapay Cafe",
   "type": "org",
@@ -50,16 +49,14 @@
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "version": "1",
   "subscriptions": [],
-}
-  

-
GET/api/accounts/{accountId}

Get an Account

This endpoint allows you to retrieve an Account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}
    curl https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "Jaim1Cu1Q55uooxSens6yk",
   "name": "Centrapay Cafe",
   "type": "org",
@@ -70,20 +67,18 @@
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "version": "1",
   "subscriptions": [],
-}
-  

-
PUT/api/accounts/{accountId}

Update an Account

This endpoint allows you to update an account.

Attributes

  • name

    stringrequired

    The name of the Account.

Request
PUT/api/accounts/{accountId}
    curl -X PUT https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk \
+
PUT/api/accounts/{accountId}

Update an Account

This endpoint allows you to update an account.

Attributes

  • name

    stringrequired

    The name of the Account.

Request
PUT/api/accounts/{accountId}
curl -X PUT https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "name": "Shortland St Cafe"
-  }'
-  
Response
    {
+
Response
{
   "id": "Jaim1Cu1Q55uooxSens6yk",
   "name": "Shortland St Cafe",
   "type": "org",
@@ -94,24 +89,21 @@
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "version": "2",
   "subscriptions": [],
-}
-  

-
PUT/api/accounts/{accountId}/subscriptions

Update Subscriptions

This endpoint allows you to update the subscriptions on an account.

Attributes

  • subscriptions

    arrayrequired

    The list of subscriptions to assign to the account.

Errors

  • INVALID_ACCOUNT_ID

    403

    The account does not exist.

  • INVALID_SUBSCRIPTION

    403

    One of the subscriptions in the list is not valid.

Request
PUT/api/accounts/{accountId}/subscriptions
    curl -X PUT https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/subscriptions \
+
PUT/api/accounts/{accountId}/subscriptions

Update Subscriptions

This endpoint allows you to update the subscriptions on an account.

Attributes

  • subscriptions

    arrayrequired

    The list of subscriptions to assign to the account.

Errors

  • INVALID_ACCOUNT_ID

    403

    The account does not exist.

  • INVALID_SUBSCRIPTION

    403

    One of the subscriptions in the list is not valid.

Request
PUT/api/accounts/{accountId}/subscriptions
curl -X PUT https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/subscriptions \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "subscriptions": [
       "quartz"
     ]
-  }'
-  
Response
    {
+
Response
{
   "subscriptions": [ "quartz" ]
-}
-  
\ No newline at end of file diff --git a/api/api-keys/index.html b/api/api-keys/index.html index c5d46f74d..d9476a632 100644 --- a/api/api-keys/index.html +++ b/api/api-keys/index.html @@ -12,27 +12,26 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

API Keys

API keys provide enduring access to a single Centrapay Account  API .

+

API Keys

API keys provide enduring access to a single Centrapay Account  API .

API Key Model

Attributes

  • accountId

    string

    The id of the Centrapay Account  API  the API Key is scoped to.

  • name

    string

    The alphanumeric name of the API key, must be unique within the account.

  • role

    string

    Supported roles are: “account-owner” and “merchant-terminal”. See Auth Permissions  API  for role details.

  • enabled

    boolean

    Flag indicating the API Key is usable for authentication.

  • createdAt

    timestamp

    When the API Key was created.

  • createdBy

    crn

    The User or API Key that created the API Key.

  • modifiedAt

    timestamp

    When the API Key was modified.

  • modifiedBy

    crn

    The User or API Key that modified the API Key.

  • version

    string

    An API Key version that is incremented when the API Key is updated.


-
POST/api/accounts/{accountId}/api-keys

Create an API Key

This endpoint allows you to create an API key.

Attributes

  • name

    stringrequired

    The alphanumeric name of the API key, must be unique within the account.

  • role

    stringrequired

    Supported roles are: “account-owner” and “merchant-terminal”. See Auth Permissions  API  for role details.

Request
POST/api/accounts/{accountId}/api-keys
    curl -X POST https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/api-keys \
+
POST/api/accounts/{accountId}/api-keys

Create an API Key

This endpoint allows you to create an API key.

Attributes

  • name

    stringrequired

    The alphanumeric name of the API key, must be unique within the account.

  • role

    stringrequired

    Supported roles are: “account-owner” and “merchant-terminal”. See Auth Permissions  API  for role details.

Request
POST/api/accounts/{accountId}/api-keys
curl -X POST https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/api-keys \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "name": "MyAPIkey",
     "role": "merchant-terminal"
-  }'
-  
Response
    {
+
Response
{
   "name": "MyAPIkey",
   "createdAt": "2020-06-01T22:32:56.631Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:AdminKey",
@@ -43,16 +42,14 @@
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "version": "1",
   "secret": "EoaEL7skkedBBy9MzrBSyxG95vUAKjYkiFvWEfiAx"
-}
-  

-
GET/api/accounts/{accountId}/api-keys

List API Keys

This endpoint allows you to list all API Keys for an Account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/api-keys
    curl -X GET https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/api-keys \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "accountId": "Jaim1Cu1Q55uooxSens6yk",
     "name": "MyOtherAPIkey",
@@ -75,20 +72,18 @@
     "version": "1",
     "role": "merchant-terminal"
   }
-]
-  

-
PUT/api/accounts/{accountId}/api-keys/{apiKeyName}

Update an API Key

This endpoint allows you to enable or disable an API key.

Attributes

  • enabled

    booleanrequired

    Flag indicating the API Key is usable for authentication.

Request
PUT/api/accounts/{accountId}/api-keys/{apiKeyName}
    curl -X PUT https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/api-keys/MyAPIkey \
+
PUT/api/accounts/{accountId}/api-keys/{apiKeyName}

Update an API Key

This endpoint allows you to enable or disable an API key.

Attributes

  • enabled

    booleanrequired

    Flag indicating the API Key is usable for authentication.

Request
PUT/api/accounts/{accountId}/api-keys/{apiKeyName}
curl -X PUT https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/api-keys/MyAPIkey \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "enabled": false
-  }'
-  
Response
    {
+
Response
{
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "name": "MyAPIkey",
   "createdAt": "2020-06-01T22:34:31.308Z",
@@ -98,7 +93,6 @@
   "enabled": false,
   "version": "2",
   "role": "merchant-terminal"
-}
-  
\ No newline at end of file diff --git a/api/asset-transfers/index.html b/api/asset-transfers/index.html index a62add91f..d4e3040a4 100644 --- a/api/asset-transfers/index.html +++ b/api/asset-transfers/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Asset Transfers

An asset transfer is an asynchronous exchange of an asset or an amount to a recipient.

+

Asset Transfers

An asset transfer is an asynchronous exchange of an asset or an amount to a recipient.

A recipient is an existing Centrapay user or someone who can create an account to claim the asset transfer by verifying their phone number or email.

After an asset transfer is completed the recipientAlias, lastSentTo and @@ -67,16 +67,15 @@


POST/api/asset-transfers

Create an Asset Transfer

Transfer an asset to a recipient. Some assets can be transfered only in whole (eg giftcards or tokens) while others can be transfered only in part (eg money).

Some assets can be transferred without supplying a recipient. A url field will be -returned in these cases. The url will link to a page to claim the asset.

Attributes

  • assetId

    stringrequired

    Id of a discrete asset to transfer or wallet to draw from.

  • recipientAlias

    string

    Phone number, email or handle of receiver.

  • description

    string

    Shows up in transaction history against the transfer. 200 character limit.

  • message

    string

    Shows up in transaction history against the transfer. 100 character limit.

  • Amount to send. Required for money transfers. Units depend on the asset type.

  • senderName

    string

    Human readable name for the sender. 30 character limit.

  • suppressNotification

    boolean

    Suppress notifications from Centrapay (SMS/Email).

Errors

  • INSUFFICIENT_WALLET_BALANCE

    403

    The value of the asset-transfer exceeds the balance on the wallet.

  • QUOTA_EXCEEDED

    403

    The transfer exceeds one or more spend quota limits. See Quota Error Response  API .

  • ASSET_NOT_ACTIVE

    403

    The asset is not active and cannot be transferred.

  • RECIPIENT_MISSING

    403

    The asset must be transferred with a recipient supplied.

  • INVALID_ASSET_TYPE

    403

    The asset’s type  API  does not support transfers.

Request
POST/api/asset-transfers
    curl -X POST https://service.centrapay.com/api/asset-transfers \
+returned in these cases. The url will link to a page to claim the asset.

Attributes

  • assetId

    stringrequired

    Id of a discrete asset to transfer or wallet to draw from.

  • recipientAlias

    string

    Phone number, email or handle of receiver.

  • description

    string

    Shows up in transaction history against the transfer. 200 character limit.

  • message

    string

    Shows up in transaction history against the transfer. 100 character limit.

  • Amount to send. Required for money transfers. Units depend on the asset type.

  • senderName

    string

    Human readable name for the sender. 30 character limit.

  • suppressNotification

    boolean

    Suppress notifications from Centrapay (SMS/Email).

Errors

  • INSUFFICIENT_WALLET_BALANCE

    403

    The value of the asset-transfer exceeds the balance on the wallet.

  • QUOTA_EXCEEDED

    403

    The transfer exceeds one or more spend quota limits. See Quota Error Response  API .

  • ASSET_NOT_ACTIVE

    403

    The asset is not active and cannot be transferred.

  • RECIPIENT_MISSING

    403

    The asset must be transferred with a recipient supplied.

  • INVALID_ASSET_TYPE

    403

    The asset’s type  API  does not support transfers.

Request
POST/api/asset-transfers
curl -X POST https://service.centrapay.com/api/asset-transfers \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "assetId": "YGRo6TYYSxH3js7",
     "recipientAlias": "+642212312"
-  }'
-  
Response
    {
+
Response
{
   "id": "M7Kn2stAxNa6ri7h",
   "status": "created",
   "value": "1000",
@@ -91,16 +90,14 @@
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-02T01:03:37.222Z",
   "suppressNotifications": false
-}
-  

-
GET/api/asset-transfers/{assetTransferId}

Get an Asset Transfer

Attributes

No Attributes.

Request
GET/api/assets/asset-transfers/{assetTransferId}
    curl https://service.centrapay.com/api/asset-transfers/M7Kn2stAxNa6ri7h \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "M7Kn2stAxNa6ri7h",
   "status": "claimed",
   "value": "6000",
@@ -115,15 +112,13 @@
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-02T01:03:37.222Z",
   "suppressNotifications": false
-}
-  

-
GET/api/asset-transfers/{assetTransferId}/summary

Get Asset Transfer Summary

Attributes

No Attributes.

Request
GET/api/assets/asset-transfers/{assetTransferId}/summary
    curl https://service.centrapay.com/api/asset-transfers/M7Kn2stAxNa6ri7h/summary
-  
Response
    {
+
Response
{
   "id": "M7Kn2stAxNa6ri7h",
   "status": "created",
   "assetId": "YGRo6TYYSxH3js7",
@@ -131,16 +126,14 @@
   "senderName": "My Cafe",
   "createdAt": "2020-05-01T12:30:00.000Z",
   "url": "https://app.centrapay.com/transfer/M7Kn2stAxNa6ri7h"
-}
-  

-
POST/api/asset-transfers/{assetTransferId}/claim

Claim Asset Transfer experimental

Claim the asset transfer for the caller’s authorised account.

Attributes

No Attributes.

Errors

  • ASSET_TRANSFER_INVALID_RECIPIENT

    403

    The asset transfer already has a recipient defined through the recipientAlias field and cannot be claimed with this API.

  • ASSET_TRANSFER_INVALID_STATUS

    403

    The asset transfer is not in a sent status and hence cannot be claimed.

Request
POST/api/asset-transfers/{assetTransferId}/claim
    curl https://service.centrapay.com/api/asset-transfers/M7Kn2stAxNa6ri7h/claim \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "M7Kn2stAxNa6ri7h",
   "status": "claimed",
   "value": "6000",
@@ -154,28 +147,24 @@
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-02T01:03:37.222Z",
   "suppressNotifications": false
-}
-  

POST/api/me/resolve-claimable-assets

Resolve Claimable Assets experimental

When you send another centrapay user cash or assets, they’re automatically assigned to them. -However, if they’re not signed up yet then these assets are not immediately assigned.

If unclaimed, asset transfers are returned after 2 weeks.

New accounts should call this endpoint to allocate assets that you’ve been sent.

Attributes

No Attributes.

Request
POST/api/me/resolve-claimable-assets
    curl -X POST https://service.centrapay.com/api/me/resolve-claimable-assets \
-  -H "X-Api-Key: $api_key"
-  
Request
POST/api/me/resolve-claimable-assets
curl -X POST https://service.centrapay.com/api/me/resolve-claimable-assets \
+  -H "X-Api-Key: $api_key"
Response
    {
-}
-  
Response
{
+}

-
GET/api/asset-transfers

List Asset Transfers experimental

Returns a paginated  API  list of Asset Transfers.

Attributes

  • recipientAccountId

    string

    The Centrapay Account id of the recipient.

  • senderAccountId

    string

    The Centrapay Account id of the sender.

Request
GET/api/asset-transfers
    curl -G https://service.centrapay.com/api/asset-transfers \
+
GET/api/asset-transfers

List Asset Transfers experimental

Returns a paginated  API  list of Asset Transfers.

Attributes

  • recipientAccountId

    string

    The Centrapay Account id of the recipient.

  • senderAccountId

    string

    The Centrapay Account id of the sender.

Request
GET/api/asset-transfers
curl -G https://service.centrapay.com/api/asset-transfers \
   -H "X-Api-Key: $api_key" \
-  -d recipientAccountId=oS3Xom2au3Ooy9aihai
-  
Response
    {
+
Response
{
 "items": [
   {
     "id": "M7Kn2stAxNa6ri7h",
@@ -194,16 +183,14 @@
     "suppressNotifications": false
   }
 ]
-}
-  

-
POST/api/asset-transfers/{assetTransferId}/cancel

Cancel an Asset Transfer

Attributes

No attributes

Errors

  • INVALID_ASSET_TRANSFER_STATUS

    403

    The asset transfer status is invalid and cannot be cancelled.

Request
POST/api/asset-transfers/{assetTransferId}/cancel
    curl -X POST https://service.centrapay.com/api/asset-transfers/M7Kn2stAxNa6ri7h/cancel \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "M7Kn2stAxNa6ri7h",
   "status": "cancelled",
   "assetId": "YGRo6TYYSxH3js7",
@@ -217,7 +204,6 @@
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-02T01:03:37.222Z",
   "suppressNotifications": false
-}
-  
\ No newline at end of file diff --git a/api/asset-types/index.html b/api/asset-types/index.html index c9a6d4e24..b98fcd982 100644 --- a/api/asset-types/index.html +++ b/api/asset-types/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/api/assets/index.html b/api/assets/index.html index a402e2ae5..66c07f31b 100644 --- a/api/assets/index.html +++ b/api/assets/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Assets

Centrapay digital assets are resources that represent the ability for a +

Assets

Centrapay digital assets are resources that represent the ability for a Centrapay account to perform transactions where value is exchanged. Assets can be spent to satisfy Payment Requests  API , withdrawn to a bank account via Funds Transfers  API  and sent to other Centrapay users via Asset Transfers  API .

@@ -65,11 +65,10 @@

Attributes

  • ref

    string

    ID of the Centrapay resource that initiated the transaction.

  • refType

    string

    Name of the Centrapay resource that initiated the transaction.

  • type

    string

    Type of the Asset Transaction. Supported values are increment-balance, decrement-balance and transfer.

  • kind

    string

    Human readable value indicating the reason for the transaction.

  • srcAssetId

    string

    ID of the source asset.

  • destAssetId

    string

    ID of the destination asset.

  • srcParty

    string

    Display value for party providing funds.

  • destParty

    string

    Display value for party receiving funds.

  • otherParty

    string

    Display value for party providing or receiving funds.

  • amount

    string

    Amount of transaction in cents.

  • activityType

    string

    Indicating whether the asset gained or lost value. Supported types are value-in and value-out.

  • activityNumber

    string

    Unique sequential Asset transaction number.


-
GET/api/assets/{assetId}

Get Asset

Attributes

No attributes.

Request
GET/api/assets/{assetId}
    curl https://service.centrapay.com/api/assets/L75M3L56N2PtBSt8g7uXLU \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "L75M3L56N2PtBSt8g7uXLU",
   "accountId": "Te2uDM7xhDLWGVJU3nzwnh",
   "category": "giftcard",
@@ -84,31 +83,27 @@
   "balanceUpdatedAt": "2021-01-01T00:00:00.000Z",
   "expiresAt": "2020-12-31T00:00:00.000Z",
   "createdAt": "2020-05-01T12:30:00.000Z"
-}
-  

-
GET/api/assets/{assetId}/summary

Get Asset Summary

Attributes

No attributes.

Request
GET/api/assets/{assetId}/summary
    curl https://service.centrapay.com/api/assets/L75M3L56N2PtBSt8g7uXLU/summary
-  
Response
    {
+
Response
{
   "id": "L75M3L56N2PtBSt8g7uXLU",
   "issuer": "Centraperk Cafe",
   "description": "Free Coffee",
   "expiresAt": "2020-12-31T00:00:00.000Z",
   "img": "https://static.centrapay.com/assets/brands/centraperk/cafe-token.png",
   "liveness": "test"
-}
-  

-
GET/api/accounts/{accountId}/assets

List Assets for Account

Returns a paginated  API  list of Assets for an account. This will not return archived assets.

Attributes

  • externalId

    string

    The asset identifier from the issuing system.

Request
GET/api/accounts/{accountId}/assets
    curl https://service.centrapay.com/api/accounts/Te2uDM7xhDLWGVJU3nzwnh/assets \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "id": "L75M3L56N2PtBSt8g7uXLU",
@@ -154,16 +149,14 @@
       "createdAt": "2020-05-01T12:30:00.000Z"
     }
   ]
-}
-  

-
GET/api/assets/{assetId}/transactions

List Asset Transactions experimental

Returns a paginated  API  list of Asset Transactions. This endpoint is currently only supported for quartz asset types.

Attributes

No Attributes.

Request
GET/api/assets/{assetId}/transactions
    curl https://service.centrapay.com/api/assets/WRhAxxWpTKb5U7pXyxQjjY/transactions \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "ref": "adRGJqMyMhmGfnDXasRZ",
@@ -211,16 +204,14 @@
       "activityNumber": "1"
     }
   ]
-}
-  

-
POST/api/assets/{assetId}/archive

Archive Asset

Archive supported asset types by asset id. Currently only gift cards may be archived.

Attributes

No Attributes.

Errors

  • UNSUPPORTED_ASSET_TYPE

    403

    Asset type can not be archived

Request
POST/api/assets/{assetId}/archive
    curl -X POST https://service.centrapay.com/api/assets/L75M3L56N2PtBSt8g7uXLU/archive \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "L75M3L56N2PtBSt8g7uXLU",
   "accountId": "Te2uDM7xhDLWGVJU3nzwnh",
   "category": "giftcard",
@@ -234,7 +225,6 @@
   "expiresAt": "2020-12-31T00:00:00.000Z",
   "createdAt": "2020-05-01T12:30:00.000Z",
   "status": "archived"
-}
-  
\ No newline at end of file diff --git a/api/auth/index.html b/api/auth/index.html index 2cdf79361..83d9e7eee 100644 --- a/api/auth/index.html +++ b/api/auth/index.html @@ -12,33 +12,30 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Auth

Authenticating API Calls

+

Auth

Authenticating API Calls

API calls can be authenticated by either providing an API key in the “X-Api-Key” header or by providing a user access token in the “Authorization” header.

Org Accounts  API  accessed with a user access token require the “X-Centrapay-Account” header to be provided. The “X-Centrapay-Account” header specifies the unique identifier of the Centrapay Org Account.

-
Authenticate with API key
GET/api/account-memberships
    curl -X GET https://service.centrapay.com/api/account-memberships \
-  -H "X-Api-Key: $api_key"
-  
-
Authenticate with user access token
GET/api/account-memberships
    curl -X GET https://service.centrapay.com/api/account-memberships \
-  -H "Authorization: $jwt"
-  
-
Authenticate org account with user access token
GET/api/account-memberships
    curl -X GET https://service.centrapay.com/api/account-memberships \
+
Authenticate org account with user access token
GET/api/account-memberships
curl -X GET https://service.centrapay.com/api/account-memberships \
   -H "Authorization: $jwt" \
-  -H "X-Centrapay-Account: Jaim1Cu1Q55uooxSens6yk"
-  

API Keys

diff --git a/api/bank-account-approvals/index.html b/api/bank-account-approvals/index.html index 3cf09f025..2a6865c13 100644 --- a/api/bank-account-approvals/index.html +++ b/api/bank-account-approvals/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Bank Account Approvals

A Bank Account Approval represents any added authorization on a Bank Account  API . +

Bank Account Approvals

A Bank Account Approval represents any added authorization on a Bank Account  API . This may be an approval from Centrapay or a consent from a Centrapay Account  API  owner that allows access to a third-party system. See Bank Account Approval Types.


@@ -53,17 +53,16 @@

Attributes

  • activityNumber

    number

    Unique sequential Bank Account Approval Activity number.

  • approvalId

    string

    The id of the associated Bank Account Approval.

  • activityType

    string

    The type of the Bank Account Approval Activity.

  • createdAt

    timestamp

    When the Bank Account Approval Activity was created.

  • createdBy

    crn

    The User or API Key that created the Bank Account Approval Activity.


-
POST/api/bank-account-approvals

Request Bank Account Approval experimental

This endpoint allows you to request a Bank Account Approval.

Attributes

Errors

  • APPROVAL_ALREADY_IN_PROGRESS

    403

    There is already a Bank Account Approval in progress that is awaiting review from Centrapay.

Request
POST/api/bank-account-approvals
    curl -X POST https://service.centrapay.com/api/bank-account-approvals \
+
POST/api/bank-account-approvals

Request Bank Account Approval experimental

This endpoint allows you to request a Bank Account Approval.

Attributes

Errors

  • APPROVAL_ALREADY_IN_PROGRESS

    403

    There is already a Bank Account Approval in progress that is awaiting review from Centrapay.

Request
POST/api/bank-account-approvals
curl -X POST https://service.centrapay.com/api/bank-account-approvals \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "mediaUploadId": "uooxSens6ykJaim1Cu1Q55",
     "bankAccountId": "WRhAxxWpTKb5U7pXyxQjjY",
     "type": "settlement"
-  }'
-  
Response
    {
+
Response
{
   "id": "DcTs3U38HdhfEqwF1GKoT3",
   "mediaUploadId": "uooxSens6ykJaim1Cu1Q55",
   "bankAccountId": "WRhAxxWpTKb5U7pXyxQjjY",
@@ -74,16 +73,14 @@
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "modifiedAt": "2021-11-08T21:52:39.915Z",
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
GET/api/bank-account-approvals/{bankAccountApprovalId}

Get Bank Account Approval experimental

This endpoint allows you to retrieve a Bank Account Approval.

Attributes

No attributes.

Request
GET/api/bank-account-approvals/{bankAccountApprovalId}
    curl https://service.centrapay.com/api/bank-account-approvals/bbab9a768921019cb856 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "bbab9a768921019cb856",
   "bankAccountId": "WRhAxxWpTKb5U7pXyxQjjY",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
@@ -95,42 +92,36 @@
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "refreshToken": "y04Njk3LTRjNmZkYjBhMzRiZSIsIm5vbmNlIjoiOTg3MTJjMGNkZmFiNWZjNzMwM2MxMzNl",
   "consentId": "d24dbe-e2bc46ac-d924e38af112"
-}
-  

-
POST/api/bank-account-approvals/{bankAccountApprovalId}/accept

Accept Bank Account Approval experimental

This endpoint allows you to accept a Bank Account Approval.

Attributes

  • reason

    string

    The reason for accepting the Bank Account Approval.

Errors

  • APPROVAL_ALREADY_REVIEWED

    403

    The Bank Account Approval has already been accepted or declined.

Request
POST/api/bank-account-approvals/{bankAccountApprovalId}/accept
    curl -X POST https://service.centrapay.com/api/bank-account-approvals/DcTs3U38HdhfEqwF1GKoT3/accept \
+
POST/api/bank-account-approvals/{bankAccountApprovalId}/accept

Accept Bank Account Approval experimental

This endpoint allows you to accept a Bank Account Approval.

Attributes

  • reason

    string

    The reason for accepting the Bank Account Approval.

Errors

  • APPROVAL_ALREADY_REVIEWED

    403

    The Bank Account Approval has already been accepted or declined.

Request
POST/api/bank-account-approvals/{bankAccountApprovalId}/accept
curl -X POST https://service.centrapay.com/api/bank-account-approvals/DcTs3U38HdhfEqwF1GKoT3/accept \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "reason": "All details match"
-  }'
-  
Response
    {}
-  
Response
{}

-
POST/api/bank-account-approvals/{bankAccountApprovalId}/decline

Decline Bank Account Approval experimental

This endpoint allows you to decline a Bank Account Approval.

Attributes

  • reason

    stringrequired

    The reason for declining the Bank Account Approval.

Errors

  • APPROVAL_ALREADY_REVIEWED

    403

    The Bank Account Approval has already been accepted or declined.

Request
POST/api/bank-account-approvals/{bankAccountApprovalId}/decline
    curl -X POST https://service.centrapay.com/api/bank-account-approvals/DcTs3U38HdhfEqwF1GKoT3/decline \
+
POST/api/bank-account-approvals/{bankAccountApprovalId}/decline

Decline Bank Account Approval experimental

This endpoint allows you to decline a Bank Account Approval.

Attributes

  • reason

    stringrequired

    The reason for declining the Bank Account Approval.

Errors

  • APPROVAL_ALREADY_REVIEWED

    403

    The Bank Account Approval has already been accepted or declined.

Request
POST/api/bank-account-approvals/{bankAccountApprovalId}/decline
curl -X POST https://service.centrapay.com/api/bank-account-approvals/DcTs3U38HdhfEqwF1GKoT3/decline \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "reason": "No details match"
-  }'
-  
Response
    {}
-  
Response
{}

-
GET/api/bank-accounts/{bankAccountId}/approvals

List Bank Account Approvals experimental

This endpoint allows you to list the Bank Account Approvals for a Bank Account.

Attributes

No attributes.

Request
GET/api/bank-accounts/{bankAccountId}/approvals
    curl https://service.centrapay.com/api/bank-accounts/5vpkxjn6z787LiAKCqwuf9/approvals \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "id": "PJ6jTgDNv1xfFAooCoWZLe",
@@ -172,7 +163,6 @@
       "consentId": "rknrd-kYbBuBa8-MNTxFwKIYbBuB"
     }
   ]
-}
-  
\ No newline at end of file diff --git a/api/bank-account-connection-intents/index.html b/api/bank-account-connection-intents/index.html index a75c7200d..060bd205a 100644 --- a/api/bank-account-connection-intents/index.html +++ b/api/bank-account-connection-intents/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Bank Account Connection Intents

A Bank Account Connection Intent facilitates user authorization of access to Bank Accounts, for example, using Open Banking flows. Typically the authorization will follow an OAuth flow where the user is redirected to a third-party system to authenticate and select one or more bank accounts.

+

Bank Account Connection Intents

A Bank Account Connection Intent facilitates user authorization of access to Bank Accounts, for example, using Open Banking flows. Typically the authorization will follow an OAuth flow where the user is redirected to a third-party system to authenticate and select one or more bank accounts.


Bank Account Connection Intent Model

  • id

    string

    The Bank Account Connection Intent’s unique identifier.

  • accountId

    string

    The id of the owning Centrapay Account  API .

  • type

    string

    The type of Bank Account Connection Intent. See Bank Account Connection Intent Types.

  • status

    string

    The current status of the Bank Account Connection Intent. Supported values are created, authorized and failed.

  • createdAt

    timestamp

    When the Bank Account Connection Intent was created.

  • createdBy

    crn

    The User or API Key that created the Bank Account Connection Intent.

  • updatedAt

    timestamp

    When the Bank Account Connection Intent was updated.

  • updatedBy

    crn

    The User or API Key that updated the Bank Account Connection Intent.

  • authorizationUrl

    string

    A URL to the third-party beginning the authorization flow.

  • test

    boolean

    A flag which is present if the intention is to connect with a Bank Account  API  used for testing.

@@ -42,17 +42,16 @@
Namedescription
account-information-consentInitiates an authorization flow for authorizing access to bank account details. After a Bank Account Connection Intent has been authorized, one or more Centrapay Bank Account resources may be created.
enduring-payment-consentInitiates an authorization flow for authorizing access to create payments.

-
POST/api/bank-account-connection-intents

Create Bank Account Connection Intent experimental

This endpoint allows you to create a Bank Account Connection Intent.

Attributes

  • accountId

    stringrequired

    The id of the owning Account  API .

  • type

    stringrequired

    The type of Bank Account Connection Intent.

  • bankAccountId

    string

    The id of the associated Bank Account  API . Required if type is enduring-payment-consent.

  • test

    boolean

    A flag which is present if the intention is to connect with a Bank Account  API  used for testing.

Errors

  • LIVENESS_MISMATCH

    403

    Only Bank Account Connection Intents with the test flag can be associated with test Bank Accounts  API , and vice versa.

Request
POST/api/bank-account-connection-intents
    curl -X POST https://service.centrapay.com/api/bank-account-connection-intents \
+
POST/api/bank-account-connection-intents

Create Bank Account Connection Intent experimental

This endpoint allows you to create a Bank Account Connection Intent.

Attributes

  • accountId

    stringrequired

    The id of the owning Account  API .

  • type

    stringrequired

    The type of Bank Account Connection Intent.

  • bankAccountId

    string

    The id of the associated Bank Account  API . Required if type is enduring-payment-consent.

  • test

    boolean

    A flag which is present if the intention is to connect with a Bank Account  API  used for testing.

Errors

  • LIVENESS_MISMATCH

    403

    Only Bank Account Connection Intents with the test flag can be associated with test Bank Accounts  API , and vice versa.

Request
POST/api/bank-account-connection-intents
curl -X POST https://service.centrapay.com/api/bank-account-connection-intents \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "accountId": "uooxSens6ykJaim1Cu1Q55",
     "type": "account-information-consent",
     "test": true
-  }'
-  
Response
    {
+
Response
{
   "id": "3KVjuKW2CZCJeJVqPxwkX7",
   "accountId": "B4u4WZCu3joZFVWT3XjWW3",
   "type": "account-information-consent",
@@ -63,20 +62,17 @@
   "updatedBy": "crn:B4u4WZCu3joZFVWT3XjWW3:api-key:MyApiKey",
   "authorizationUrl": "https://example.com/authorization-url",
   "test": true
-}
-  

-
POST/api/bank-account-connection-intents/{bankAccountConnectionIntentId}/authorize

Authorize Bank Account Connection Intent experimental

This endpoint allows you to authorize a Bank Account Connection Intent.

Attributes

  • code

    stringrequired

    Authorization code returned from third-party.

Request
POST/api/bank-account-connection-intents
    curl -X POST https://service.centrapay.com/api/bank-account-connection-intents/3KVjuKW2CZCJeJVqPxwkX7/authorize \
+
POST/api/bank-account-connection-intents/{bankAccountConnectionIntentId}/authorize

Authorize Bank Account Connection Intent experimental

This endpoint allows you to authorize a Bank Account Connection Intent.

Attributes

  • code

    stringrequired

    Authorization code returned from third-party.

Request
POST/api/bank-account-connection-intents
curl -X POST https://service.centrapay.com/api/bank-account-connection-intents/3KVjuKW2CZCJeJVqPxwkX7/authorize \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "code": "hKpKupTM391pE10xfQiorMxXarRKAHRhTfH_x"
-  }'
-  
Response
    {}
-  
Response
{}
\ No newline at end of file diff --git a/api/bank-accounts/index.html b/api/bank-accounts/index.html index 8c1fbb862..d9b5f95b2 100644 --- a/api/bank-accounts/index.html +++ b/api/bank-accounts/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Bank Accounts

Bank Accounts are used to get money in and out of a Centrapay Account. Money is +

Bank Accounts

Bank Accounts are used to get money in and out of a Centrapay Account. Money is moved by creating “Top Up” or “Withdrawal” Funds Transfers  API .

Bank Accounts must be “direct debit authorized” before they can be used for a Top Up and they must be “verified” before top up funds are released. Bank @@ -62,7 +62,7 @@


POST/api/bank-accounts

Create Bank Account

A Bank Account can be created with or without direct debit authorized. By including directDebitAuthority, the user accepts our Direct Debit terms -and has authority to operate this account.

phone, fullName and emailAddress are all required to create a direct-debit authority. This is required to be able to Top Up a Bank Account.

Attributes

  • accountId

    stringrequired

    The id of the owning Centrapay Account  API .

  • bankAccountNumber

    stringrequired

    The user’s Bank Account number.

  • bankAccountName

    stringrequired

    The name on the Bank Account provided by the user.

  • phoneNumber

    string

    The user’s phone number.

  • fullName

    string

    The first and last name of the user.

  • emailAddress

    string

    The user’s email address.

  • type

    string

    The Bank Account Type of the bank, defaults to centrapay.

  • test

    boolean

    A flag which is present if the Bank Account is for testing.

Errors

  • BANK_ACCOUNT_LIMIT_EXCEEDED

    403

    The Centrapay account already has the max amount of directDebitAuthorized enabled Bank Accounts.

  • BANK_ACCOUNT_HOLDER_LIMIT_EXCEEDED

    403

    The global maximum Bank Accounts for the provided Bank Account number has been reached.

  • DUPLICATE_BANK_ACCOUNT

    403

    The Centrapay account already holds this Bank Account.

Request
POST/api/bank-accounts
    curl -X POST https://service.centrapay.com/api/bank-accounts \
+and has authority to operate this account.

phone, fullName and emailAddress are all required to create a direct-debit authority. This is required to be able to Top Up a Bank Account.

Attributes

  • accountId

    stringrequired

    The id of the owning Centrapay Account  API .

  • bankAccountNumber

    stringrequired

    The user’s Bank Account number.

  • bankAccountName

    stringrequired

    The name on the Bank Account provided by the user.

  • phoneNumber

    string

    The user’s phone number.

  • fullName

    string

    The first and last name of the user.

  • emailAddress

    string

    The user’s email address.

  • type

    string

    The Bank Account Type of the bank, defaults to centrapay.

  • test

    boolean

    A flag which is present if the Bank Account is for testing.

Errors

  • BANK_ACCOUNT_LIMIT_EXCEEDED

    403

    The Centrapay account already has the max amount of directDebitAuthorized enabled Bank Accounts.

  • BANK_ACCOUNT_HOLDER_LIMIT_EXCEEDED

    403

    The global maximum Bank Accounts for the provided Bank Account number has been reached.

  • DUPLICATE_BANK_ACCOUNT

    403

    The Centrapay account already holds this Bank Account.

Request
POST/api/bank-accounts
curl -X POST https://service.centrapay.com/api/bank-accounts \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -74,10 +74,9 @@
       "fullName": "John Doe",
       "emailAddress": "john.doe@gmail.com"
     }
-  }'
-  
Response
    {
+
Response
{
   "id": "WRhAxxWpTKb5U7pXyxQjjY",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "bankAccountNumber": "12-1234-1234567-123",
@@ -91,22 +90,20 @@
   "modifiedAt": "2020-06-12T01:17:46.499Z",
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "approvals": []
-}
-  

-
POST/api/bank-accounts/{bankAccountId}/direct-debit-authorities

Add Direct Debit Authority to a Bank Account

By using this endpoint, the user accepts our Direct Debit terms and has authority to operate this account.

Attributes

  • phoneNumber

    stringrequired

    The user’s phone number.

  • fullName

    stringrequired

    The first and last name of the user.

  • emailAddress

    stringrequired

    The user’s email address.

Errors

  • DIRECT_DEBIT_ALREADY_AUTHORIZED

    403

    This bank authority cannot be changed as all fields have been set.

  • DIRECT_DEBIT_LIMIT_EXCEEDED

    403

    The Centrapay account already has the max amount of directDebitAuthorized enabled Bank Accounts.

Request
POST/api/bank-accounts/{bankAccountId}/direct-debit-authorities
    curl -X POST https://service.centrapay.com/api/bank-accounts/WRhAxxWpTKb5U7pXyxQjjY/direct-debit-authorities \
+
POST/api/bank-accounts/{bankAccountId}/direct-debit-authorities

Add Direct Debit Authority to a Bank Account

By using this endpoint, the user accepts our Direct Debit terms and has authority to operate this account.

Attributes

  • phoneNumber

    stringrequired

    The user’s phone number.

  • fullName

    stringrequired

    The first and last name of the user.

  • emailAddress

    stringrequired

    The user’s email address.

Errors

  • DIRECT_DEBIT_ALREADY_AUTHORIZED

    403

    This bank authority cannot be changed as all fields have been set.

  • DIRECT_DEBIT_LIMIT_EXCEEDED

    403

    The Centrapay account already has the max amount of directDebitAuthorized enabled Bank Accounts.

Request
POST/api/bank-accounts/{bankAccountId}/direct-debit-authorities
curl -X POST https://service.centrapay.com/api/bank-accounts/WRhAxxWpTKb5U7pXyxQjjY/direct-debit-authorities \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "phoneNumber": "+64212345678",
     "fullName": "John Doe",
     "emailAddress": "john@doe.org"
-  }'
-  
Response
    {
+
Response
{
   "id": "WRhAxxWpTKb5U7pXyxQjjY",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "bankAccountNumber": "12-1234-1234567-123",
@@ -120,16 +117,14 @@
   "modifiedAt": "2020-06-12T01:17:46.499Z",
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "approvals": []
-}
-  

-
GET/api/bank-accounts/{bankAccountId}

Get Bank Account

This endpoint allows you to retrieve information about a Bank Account.

Attributes

No attributes.

Request
GET/api/bank-accounts/{bankAccountId}
    curl https://service.centrapay.com/api/bank-accounts/d4a7cbd6818a87c51b97 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "d4a7cbd6818a87c51b97",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "status": "created",
@@ -151,59 +146,51 @@
   ],
   "type": "quartz",
   "test": true,
-}
-  

-
GET/api/bank-accounts/{bankAccountId}/balance

Get Bank Account Balance experimental

This endpoint allows you to retrieve the balance of a Bank Account.

Attributes

No attributes.

Errors

  • BANK_BALANCE_NOT_SUPPORTED

    403

    The Bank Account Type does not support retrieval of a balance using Open Banking flows.

  • BANK_AUTHORIZATION_INVALID

    403

    The access token to retrieve the Bank Account Balance is no longer valid.

Request
GET/api/bank-accounts/{bankAccountId}/balance
    curl https://service.centrapay.com/api/bank-accounts/d4a7cbd6818a87c51b97/balance \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "bankAccountId": "d4a7cbd6818a87c51b97",
   "balance": 1000,
   "currency": "NZD"
-}
-  

-
POST/api/bank-accounts/{bankAccountId}/verify

Verify Bank Account

Verification codes show up on statements when a user makes withdrawals and deposits. To verify an account, you need to direct the user to make a Top Up or Withdrawal and then check their statement.

Attributes

  • verificationCode

    stringrequired

    The code on the user’s bank statement.

Errors

  • BANK_ACCOUNT_ALREADY_VERIFIED

    403

    The bank account is already verified.

  • VERIFICATION_CODE_INVALID

    403

    The verification code is incorrect.

  • BANK_ACCOUNT_VERIFICATION_ATTEMPTS_EXCEEDED

    403

    The bank account’s maximum failed verification attempts has been reached.

  • ACCOUNT_MISMATCH

    403

    The top up / withdrawal and the bank account do not belong to the same account.

Request
POST/api/bank-accounts/{bankAccountId}/verify
    curl -X POST https://service.centrapay.com/api/bank-accounts/WRhAxxWpTKb5U7pXyxQjjY/verify \
+
POST/api/bank-accounts/{bankAccountId}/verify

Verify Bank Account

Verification codes show up on statements when a user makes withdrawals and deposits. To verify an account, you need to direct the user to make a Top Up or Withdrawal and then check their statement.

Attributes

  • verificationCode

    stringrequired

    The code on the user’s bank statement.

Errors

  • BANK_ACCOUNT_ALREADY_VERIFIED

    403

    The bank account is already verified.

  • VERIFICATION_CODE_INVALID

    403

    The verification code is incorrect.

  • BANK_ACCOUNT_VERIFICATION_ATTEMPTS_EXCEEDED

    403

    The bank account’s maximum failed verification attempts has been reached.

  • ACCOUNT_MISMATCH

    403

    The top up / withdrawal and the bank account do not belong to the same account.

Request
POST/api/bank-accounts/{bankAccountId}/verify
curl -X POST https://service.centrapay.com/api/bank-accounts/WRhAxxWpTKb5U7pXyxQjjY/verify \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "verificationCode": "1111"
-  }'
-  
Response
    {
+
Response
{
   "verificationCode": "1111"
-}
-  

-
POST/api/bank-authorities/{bankAccountId}/verify

Verify Bank Authority deprecated

If you’re creating new interfaces, please work with Verify Bank Account.

Attributes

  • verificationCode

    stringrequired

    The code on the user’s bank statement.

Errors

  • BANK_ACCOUNT_ALREADY_VERIFIED

    403

    The bank account is already verified.

  • VERIFICATION_CODE_INVALID

    403

    The verification code is incorrect.

  • BANK_ACCOUNT_VERIFICATION_ATTEMPTS_EXCEEDED

    403

    The bank account’s maximum failed verification attempts has been reached.

  • ACCOUNT_MISMATCH

    403

    The top up / withdrawal and the bank account do not belong to the same account.

Request
POST/api/bank-authorities/{bankAccountId}/verify
    curl -X POST https://service.centrapay.com/api/bank-authorities/WRhAxxWpTKb5U7pXyxQjjY/verify \
+
POST/api/bank-authorities/{bankAccountId}/verify

Verify Bank Authority deprecated

If you’re creating new interfaces, please work with Verify Bank Account.

Attributes

  • verificationCode

    stringrequired

    The code on the user’s bank statement.

Errors

  • BANK_ACCOUNT_ALREADY_VERIFIED

    403

    The bank account is already verified.

  • VERIFICATION_CODE_INVALID

    403

    The verification code is incorrect.

  • BANK_ACCOUNT_VERIFICATION_ATTEMPTS_EXCEEDED

    403

    The bank account’s maximum failed verification attempts has been reached.

  • ACCOUNT_MISMATCH

    403

    The top up / withdrawal and the bank account do not belong to the same account.

Request
POST/api/bank-authorities/{bankAccountId}/verify
curl -X POST https://service.centrapay.com/api/bank-authorities/WRhAxxWpTKb5U7pXyxQjjY/verify \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "verificationCode": "1111"
-  }'
-  
Response
    {
+
Response
{
   "verificationCode": "1111"
-}
-  

-
GET/api/accounts/{accountId}/bank-accounts

List Bank Accounts

This endpoint allows you to list the Bank Accounts for an account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/bank-accounts
    curl https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/bank-accounts \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "id": "XZbPLViMzekVBbF7QMqgaY",
     "accountId": "Jaim1Cu1Q55uooxSens6yk",
@@ -245,16 +232,14 @@
     ],
     "type": "centrapay"
   }
-]
-  

-
GET/api/bank-authorities

List Bank Authorities deprecated

If you’re creating new interfaces, please work with List Bank Accounts.

Attributes

No attributes.

Request
GET/api/bank-authorities
    curl https://service.centrapay.com/api/bank-authorities \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "id": "WRhAxxWpTKb5U7pXyxQjjY",
     "accountId": "Jaim1Cu1Q55uooxSens6yk",
@@ -285,12 +270,11 @@
       }
     ]
   }
-]
-  

-
POST/api/bank-authorities

Create Bank Authority deprecated

If you’re creating new interfaces, please work with Create Bank Account.

Creating a Bank Authority both creates a new Bank Account and a direct debit authority. By using this endpoint, the user accepts our Direct Debit terms and has authority to operate this account.

Attributes

  • accountId

    stringrequired

    The id of the owning Centrapay Account  API .

  • fullName

    stringrequired

    The first and last name of the user.

  • phoneNumber

    stringrequired

    The user’s phone number.

  • emailAddress

    stringrequired

    The user’s email address.

  • bankAccountNumber

    stringrequired

    The user’s Bank Account number.

  • bankAccountName

    stringrequired

    The name on the Bank Account provided by the user.

Errors

  • BANK_AUTHORITY_LIMIT_EXCEEDED

    403

    The account already has the max amount of bank accounts.

  • BANK_AUTHORITIES_FOR_BANK_ACCOUNT_EXCEEDED

    403

    There are already two bank accounts for the provided bank account number, which is the maximum allowed.

Request
POST/api/bank-authorities
    curl -X POST https://service.centrapay.com/api/bank-authorities \
+
POST/api/bank-authorities

Create Bank Authority deprecated

If you’re creating new interfaces, please work with Create Bank Account.

Creating a Bank Authority both creates a new Bank Account and a direct debit authority. By using this endpoint, the user accepts our Direct Debit terms and has authority to operate this account.

Attributes

  • accountId

    stringrequired

    The id of the owning Centrapay Account  API .

  • fullName

    stringrequired

    The first and last name of the user.

  • phoneNumber

    stringrequired

    The user’s phone number.

  • emailAddress

    stringrequired

    The user’s email address.

  • bankAccountNumber

    stringrequired

    The user’s Bank Account number.

  • bankAccountName

    stringrequired

    The name on the Bank Account provided by the user.

Errors

  • BANK_AUTHORITY_LIMIT_EXCEEDED

    403

    The account already has the max amount of bank accounts.

  • BANK_AUTHORITIES_FOR_BANK_ACCOUNT_EXCEEDED

    403

    There are already two bank accounts for the provided bank account number, which is the maximum allowed.

Request
POST/api/bank-authorities
curl -X POST https://service.centrapay.com/api/bank-authorities \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -300,10 +284,9 @@
     "emailAddress": "John.doe@email.com",
     "bankAccountNumber": "12-1234-1234567-123",
     "bankAccountName": "John Doe"
-  }'
-  
Response
    {
+
Response
{
   "id": "WRhAxxWpTKb5U7pXyxQjjY",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "bankAccountNumber": "12-1234-1234567-123",
@@ -316,16 +299,14 @@
   "modifiedAt": "2020-06-12T01:17:46.499Z",
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "approvals": []
-}
-  

-
GET/api/bank-authorities/{bankAccountId}

Get Bank Authority deprecated

If you’re creating new interfaces, please work with Get Bank Account.

Attributes

No attributes.

Errors

  • BANK_AUTHORITY_LIMIT_EXCEEDED

    403

    The account already has the max amount of bank accounts.

  • BANK_AUTHORITIES_FOR_BANK_ACCOUNT_EXCEEDED

    403

    There are already two bank accounts for the provided bank account number, which is the maximum allowed.

Request
GET/api/bank-authorities/{bankAccountId}
    curl https://service.centrapay.com/api/bank-authorities/WRhAxxWpTKb5U7pXyxQjjY \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "WRhAxxWpTKb5U7pXyxQjjY",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "bankAccountNumber": "12-1234-1234567-123",
@@ -338,7 +319,6 @@
   "modifiedAt": "2020-06-12T01:17:46.499Z",
   "modifiedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "approvals": []
-}
-  
\ No newline at end of file diff --git a/api/batch-types/farmlands-external-asset/index.html b/api/batch-types/farmlands-external-asset/index.html index 23503f56e..1f43f5b46 100644 --- a/api/batch-types/farmlands-external-asset/index.html +++ b/api/batch-types/farmlands-external-asset/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Farmlands External Asset Batch

Loads Farmlands Card data into Centrapay as external assets.

+

Farmlands External Asset Batch

Loads Farmlands Card data into Centrapay as external assets.

@@ -52,11 +52,10 @@

Example JSONL File

A complete batch example with all batch types included. For more legible examples please refer to Example Models.

-
Example JSONL
    {"externalId":"9b2ec6d1-c83b-496a-8e52-2989f23d9076","accountNumber":"012345678","availableBalance":"1000","contacts":[]}
+
Example JSONL
{"externalId":"9b2ec6d1-c83b-496a-8e52-2989f23d9076","accountNumber":"012345678","availableBalance":"1000","contacts":[]}
 {"externalId":"d0d7e14d-4ce5-4f42-8a4c-d604a9609f66","accountNumber":"012345678","availableBalance":"1000"}
 {"externalId":"69d64d80-f9bd-4057-bc5b-1c55685d995b","accountNumber":"012345678","contacts":[{"externalId":"6e496c2a-1dae-4036-847d-c53bf6c6d410","name":"Road Runner","mobile":"+64221105598","email":"road@runner.net","primary":true,"cards":[{"externalId":"9b2ec6d1-c83b-496a-8e52-2989f23d9076","barcode":"976238759","status":"active","expiry":"2022-10-01T22:32:56.631Z"},{"externalId":"74e4f94c-8316-42e7-9aa1-eb1539528894","barcode":"957813964","status":"inactive","expiry":"2022-08-01T22:32:56.631Z"}]}]}
-{"externalId":"b5fde0e0-357c-4fda-a90f-fd857f2be999","accountNumber":"830578479","availableBalance":"12000","contacts":[{"externalId":"6e496c2a-1dae-4036-847d-c53bf6c6d410","name":"Road Runner","mobile":"+64221102598","email":"road@runner.net","primary":true,"cards":[{"externalId":"65e701c3-6973-4322-8fa6-4560a489417f","barcode":"458028560","status":"active","expiry":"2023-06-01T22:32:56.631Z"},{"externalId":"69d64d80-f9bd-4057-bc5b-1c55685d995b","barcode":"635570865","status":"inactive","farmlandsStatus":"Suspended by customer","expiry":"2022-04-01T22:32:56.631Z"}]},{"externalId":"6e4813e6-7a18-47ea-b92e-add36c8815ca","name":"Yosemite Sam","mobile":"+64220002598","email":"yosemite@runner.net","primary":false,"cards":[{"externalId":"74e4f94c-8316-42e7-9aa1-eb1539528894","barcode":"137628567","status":"active","expiry":"2022-04-01T22:32:56.631Z"}]},{"externalId":"82bdb041-ea79-448c-816f-77af8b6750b2","name":"Wile E. Coyote","mobile":"+64221102598","email":"while@e-cyote.net","primary":false,"cards":[{"externalId":"62904b86-b4cc-45a9-b3c9-287a00ae9ef5","barcode":"722798445","status":"active","expiry":"2022-04-01T22:32:56.631Z"}]}]}
-  

Example Models

@@ -65,7 +64,7 @@

Warning: Below our records have newlines for legibility. When submitting a batch file you must only use newlines to separate records.

An example of a Centrapay Asset  API  complete with availableBalance, contacts and cards.

-
Example Centrapay Asset
    {
+
Example Centrapay Asset
{
   "externalId": "b5fde0e0-357c-4fda-a90f-fd857f2be999",
   "accountNumber": "830578479",
   "availableBalance": "12000",
@@ -123,31 +122,28 @@
       ]
     }
   ]
-}
-  

Update the availableBalance on an account and remove all contacts associated with it. Note, this renders the availableBalance un-spendable.

-
Example Centrapay Asset
    {
+
Example Centrapay Asset
{
   "externalId": "9b2ec6d1-c83b-496a-8e52-2989f23d9076",
   "accountNumber": "012345678",
   "availableBalance": "1000",
   "contacts": []
-}
-  

Update the availableBalance on an account.

-
Example Centrapay Asset
    {
+
Example Centrapay Asset
{
   "externalId": "d0d7e14d-4ce5-4f42-8a4c-d604a9609f66",
   "accountNumber": "012345678",
   "availableBalance": "1000"
-}
-  

Update the contact list for an account. Use this where you want to exclude availableBalance.

-
Example Centrapay Asset
    {
+
Example Centrapay Asset
{
   "externalId": "69d64d80-f9bd-4057-bc5b-1c55685d995b",
   "accountNumber": "012345678",
   "contacts": [
@@ -173,7 +169,6 @@
       ]
     }
   ]
-}
-  
\ No newline at end of file diff --git a/api/batch-types/verifone-terminal-status/index.html b/api/batch-types/verifone-terminal-status/index.html index 38e8444ab..ca54efde3 100644 --- a/api/batch-types/verifone-terminal-status/index.html +++ b/api/batch-types/verifone-terminal-status/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Verifone Terminal Status Batch

Performs a bulk update to the current status for connected Verifone NZ payment terminals. See the Batch  API  resource for how to submit an instance of this batch.

+

Verifone Terminal Status Batch

Performs a bulk update to the current status for connected Verifone NZ payment terminals. See the Batch  API  resource for how to submit an instance of this batch.

@@ -41,9 +41,8 @@

Example JSONL File

A complete batch example with all batch types included. For more legible examples please refer to Example Models.

-
Example JSONL
    {"merchantId":"06baa0708ee0e000696","merchantConfigId":"baa09e8158300063fc","merchantName":"Centra Café","description":"Till #1","model":"VX820","terminalId":"325-136-331","deviceId":"T404395000004","status":"inactive","statusMessage":"update required","firstSeen":"2020-01-14T09:00:00Z","lastSeen":"2022-03-14T09:00:00Z","configVersion": 20210914.1,"configUpdatedAt":"2021-09-15 09:00:00 UTC","softwareVersion":"1.7.134","softwareUpdatedAt":"2021-11-14 09:00:00 UTC"}
-{"merchantId":"06baa0708ee0e000696","merchantConfigId":"baa09e8158300063fc","merchantName":"Centra Café","description":"Till #2","model":"VX820","terminalId":"325-136-329","deviceId":"T404395000002","status":"active","statusMessage":"ok","firstSeen":"2020-01-14T09:00:00Z","lastSeen":"2022-03-14T09:00:00Z","configVersion": 20220214.1,"configUpdatedAt":"2022-02-14 09:00:00 UTC","softwareVersion":"1.7.134","softwareUpdatedAt":"2021-11-14 09:00:00 UTC"}
-  

@@ -51,7 +50,7 @@

Below our records have newlines for legibility. When submitting a batch file you must only use newlines to separate records.

-
Pretty Printed Example
    {
+
Pretty Printed Example
{
   "merchantId": "06baa0708ee0e000696",
   "merchantConfigId": "baa09e8158300063fc",
   "merchantName": "Centra Café",
@@ -67,7 +66,6 @@
   "configUpdatedAt": "2022-02-14 09:00:00 UTC",
   "softwareVersion": "1.7.134",
   "softwareUpdatedAt": "2021-11-14 09:00:00 UTC"
-}
-  
\ No newline at end of file diff --git a/api/batches/index.html b/api/batches/index.html index 1ad491e8c..6346d4780 100644 --- a/api/batches/index.html +++ b/api/batches/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Batches

Batches enable bulk loading of resource onto the Centrapay platform.

+

Batches

Batches enable bulk loading of resource onto the Centrapay platform.

Batch Model

Attributes

  • id

    string

    The Batch’s unique identifier.

  • status

    string

    The current Lifecycle Stage of the batch.

  • type

    string

    Batch Type id used to describe the batch content.

  • totalCount

    bignumber

    The number of items processed.

  • errorCount

    bignumber

    Total Error counted.

  • errors

    array

    Error list for the batch.

  • test

    boolean

    true if the batch is for testing purposes only.

@@ -103,7 +103,7 @@
FieldTypeDescription
messageStringA description of what caused the Error.
externalIdStringField used in debugging in reference to an id from the file.
indexBigNumberItem offset where the Error was identified in the file.

-
POST/api/batches

Create Batch

Initialize loading of entities from a batch file.

Attributes

  • type

    stringrequired

    Batch Type used to describe the batch content.

  • url

    stringrequired

    The url where the file is located.

  • accountId

    stringrequired

    Centrapay Account Id that submitted the Batch.

  • test

    boolean

    true if the batch is for testing purposes only.

Errors

  • LIVENESS_MISMATCH

    403

    accountId test flag is not the same as submitted Batch’s test flag.

Request
POST/api/batches
    curl -X POST https://service.centrapay.com/api/batches \
+
POST/api/batches

Create Batch

Initialize loading of entities from a batch file.

Attributes

  • type

    stringrequired

    Batch Type used to describe the batch content.

  • url

    stringrequired

    The url where the file is located.

  • accountId

    stringrequired

    Centrapay Account Id that submitted the Batch.

  • test

    boolean

    true if the batch is for testing purposes only.

Errors

  • LIVENESS_MISMATCH

    403

    accountId test flag is not the same as submitted Batch’s test flag.

Request
POST/api/batches
curl -X POST https://service.centrapay.com/api/batches \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -111,10 +111,9 @@
     "url": "https://azurebuckets.com/1234",
     "accountId": "C4QnjXvj8At6SMsEN4LRi9",
     "test": true
-  }'
-  
Response
    {
+
Response
{
   "id": "AVH5uG4gRLYK6YR8JyrViN",
   "accountId": "1mdj7bj95gjo92r0ux6wfy69gj3h77",
   "status": "created",
@@ -126,16 +125,14 @@
   "errors": [
 
   ]
-}
-  

-
GET/api/batches/{batchId}

Get Batch

This endpoint allows you to retrieve a Batch by id.

Attributes

No attributes.

Request
GET/api/batches/{batchId}
    curl https://service.centrapay.com/api/batches/AVH5uG4gRLYK6YR8JyrViN \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "AVH5uG4gRLYK6YR8JyrViN",
   "accountId": "1mdj7bj95gjo92r0ux6wfy69gj3h77",
   "status": "complete",
@@ -151,7 +148,6 @@
       "message": "INVALID_BARCODE_LENGTH"
     }
   ]
-}
-  
\ No newline at end of file diff --git a/api/businesses/index.html b/api/businesses/index.html index 984f039d9..4113d4d17 100644 --- a/api/businesses/index.html +++ b/api/businesses/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Businesses

A Business represents a company registered with the New Zealand Companies Office. It is associated with a single Account  API .

+

Businesses

A Business represents a company registered with the New Zealand Companies Office. It is associated with a single Account  API .

Business Model

Attributes

  • id

    string

    The unique identifier.

  • accountId

    string

    The Centrapay accountId for an org account.

  • accountName

    string

    The Centrapay account name for an org account.

  • nzbn

    string

    The unique NZBN identifier.

  • name

    string

    Legal name recorded in the Companies Register.

  • tradingName

    string

    Trading name recorded in the Companies Register.

  • companyNumber

    string

    Company number recorded in the Companies Register.

  • createdAt

    timestamp

    When the Business was created.

  • updatedAt

    timestamp

    When the Business was updated.

  • createdBy

    crn

    The User or API Key that created the Business.

  • updatedBy

    crn

    The User or API Key that updated the Business.

  • taxNumber

    object

    The value-added tax configuration for the Business. See Tax Number Model.

  • onboardingStatus

    crn

    The onboarding status of the Business. See Onboarding Statuses for possible values.

  • onboardingStatusReason

    string

    The reason associated with the Onboarding Status. See Onboarding Status Reasons for possible values.

@@ -99,7 +99,7 @@

Attributes

  • value

    string

    The tax number.

  • type

    string

    Type of value-added tax. Can be nz-gst.


-
POST/api/businesses

Create Business experimental

This endpoint allows you to create a new Business. If accountId is not provided when creating a Business, then a new org account will be created and associated to the Business.

Attributes

  • nzbn

    stringrequired

    The unique NZBN identifier.

  • accountId

    string

    The Centrapay accountId.

  • test

    string

    The created Centrapay org account will have the test flag.

  • taxNumber

    object

    The value-added tax configuration.

Errors

  • INVALID_ACCOUNT

    403

    Account does not exist, is not authorized, is of the wrong type, or is not in the NZ region.

  • INVALID_NZBN

    403

    The NZBN provided does not match any NZ business.

Request
POST/api/businesses
    curl -X POST https://service.centrapay.com/api/businesses \
+
POST/api/businesses

Create Business experimental

This endpoint allows you to create a new Business. If accountId is not provided when creating a Business, then a new org account will be created and associated to the Business.

Attributes

  • nzbn

    stringrequired

    The unique NZBN identifier.

  • accountId

    string

    The Centrapay accountId.

  • test

    string

    The created Centrapay org account will have the test flag.

  • taxNumber

    object

    The value-added tax configuration.

Errors

  • INVALID_ACCOUNT

    403

    Account does not exist, is not authorized, is of the wrong type, or is not in the NZ region.

  • INVALID_NZBN

    403

    The NZBN provided does not match any NZ business.

Request
POST/api/businesses
curl -X POST https://service.centrapay.com/api/businesses \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -108,10 +108,9 @@
       "value": "123-456-789",
       "type": "nz-gst"
     }
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "accountName": "Centrapay",
@@ -128,12 +127,11 @@
     "type": "nz-gst",
   },
   "onboardingStatus": "applied"
-}
-  

-
PUT/api/businesses/{businessId}

Update Business experimental

This endpoint allows you to update a Business.

Attributes

  • taxNumber

    object

    The value-added tax configuration.

  • farmlandsBusinessNumber

    string

    The number associated with your Farmlands business.

Errors

  • INVALID_ACCOUNT

    403

    Account does not exist, is not authorized, is of the wrong type, or is not in the NZ region.

  • INVALID_NZBN

    403

    The NZBN provided does not match any NZ business.

Request
PUT/api/businesses/{businessId}
    curl -X PUT https://service.centrapay.com/api/businesses/DKTs3U38hdhfEqwF1JKoT2 \
+
PUT/api/businesses/{businessId}

Update Business experimental

This endpoint allows you to update a Business.

Attributes

  • taxNumber

    object

    The value-added tax configuration.

  • farmlandsBusinessNumber

    string

    The number associated with your Farmlands business.

Errors

  • INVALID_ACCOUNT

    403

    Account does not exist, is not authorized, is of the wrong type, or is not in the NZ region.

  • INVALID_NZBN

    403

    The NZBN provided does not match any NZ business.

Request
PUT/api/businesses/{businessId}
curl -X PUT https://service.centrapay.com/api/businesses/DKTs3U38hdhfEqwF1JKoT2 \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -142,10 +140,9 @@
       "type": "nz-gst"
     },
     "farmlandsBusinessNumber": "12345678"
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "accountName": "Centrapay",
@@ -163,16 +160,14 @@
   },
   "farmlandsBusinessNumber": "12345678",
   "onboardingStatus": "applied"
-}
-  

-
GET/api/accounts/{accountId}/business

Get Business by Account Id experimental

This endpoint allows you to retrieve a Business by account id.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/business
    curl https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/business \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "accountName": "Centrapay",
@@ -184,17 +179,15 @@
   "updatedAt": "2020-06-12T01:17:46.499Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
-}
-  

-
GET/api/nzbn-search

Search NZ Company Register experimental

This endpoint returns a list of companies that match the queried param on company name, nzbn number or company number. Results are paginated  API  and ordered by relevance.

Attributes

No attributes.

Request
GET/api/nzbn-search
    curl -G https://service.centrapay.com/api/nzbn-search \
+
GET/api/nzbn-search

Search NZ Company Register experimental

This endpoint returns a list of companies that match the queried param on company name, nzbn number or company number. Results are paginated  API  and ordered by relevance.

Attributes

No attributes.

Request
GET/api/nzbn-search
curl -G https://service.centrapay.com/api/nzbn-search \
   -H "X-Api-Key: $api_key" \
-  -d q=centrapay
-  
Response
    {
+
Response
{
   "items": [
     {
       "nzbn": "9429046246448",
@@ -202,16 +195,14 @@
       "companyNumber": "6340244"
     }
   ]
-}
-  

-
GET/api/nzbn/{nzbn}

Get Business Details from NZ Company Register experimental

This endpoint allows you to retrieve a Business by account id.

Attributes

No attributes.

Request
GET/api/nzbn/{nzbn}
    curl https://service.centrapay.com/api/nzbn/9429046246448 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "nzbn": "9429046246448",
   "companyName": "CENTRAPAY LIMITED",
   "tradingName": "CentraPay",
@@ -236,21 +227,19 @@
       ]
     }
   ]
-}
-  

-
POST/api/businesses/{businessId}/set-onboarding-status

Set Business Onboarding Status

This endpoint returns allows you to set the onboarding status of a Business.

Attributes

Request
POST/api/businesses/{businessId}/set-onboarding-status
    curl -X POST https://service.centrapay.com/api/businesses/DKTs3U38hdhfEqwF1JKoT2/set-onboarding-status \
+
POST/api/businesses/{businessId}/set-onboarding-status

Set Business Onboarding Status

This endpoint returns allows you to set the onboarding status of a Business.

Attributes

Request
POST/api/businesses/{businessId}/set-onboarding-status
curl -X POST https://service.centrapay.com/api/businesses/DKTs3U38hdhfEqwF1JKoT2/set-onboarding-status \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "onboardingStatus": "deactivated",
     "onboardingStatusReason": "change-of-ownership"
-  }'
-  
Response
    {
+
Response
{
   "type": "set-onboarding-status",
   "onboardingStatus": "deactivated",
   "onboardingStatusReason": "change-of-ownership",
@@ -258,7 +247,6 @@
   "createdAt": "2020-06-12T01:17:46.499Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "activityNumber": 2
-}
-  
\ No newline at end of file diff --git a/api/data-types/index.html b/api/data-types/index.html index 178af2cfb..4a3b96202 100644 --- a/api/data-types/index.html +++ b/api/data-types/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/api/external-assets/index.html b/api/external-assets/index.html index 8227bb70d..30903651a 100644 --- a/api/external-assets/index.html +++ b/api/external-assets/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

External Assets

External assets are Assets  API  which are issued by a third-party.

+

External Assets

External assets are Assets  API  which are issued by a third-party.


-
POST/api/external-assets

Load an External Asset

Load an asset from a supported third-party issuer. Asset details will be obtained from the issuer.

Attributes

  • accountId

    stringrequired

    The Centrapay account which will own the asset.

  • category

    stringrequired

    The category an asset will be grouped by. Valid values: “giftcard”.

  • type

    stringrequired

    The Centrapay ledger corresponding to the asset. Valid values: “epay.nzd.main”, “epay.nzd.test”.

  • issuer

    stringrequired

    The asset issuer. Valid values: “ezipay”.

  • externalId

    stringrequired

    The issuer’s asset id such as card number.

  • pin

    string

    Additional secret required by the issuer for loading or redeeming the asset.

  • description

    string

    Description of the asset, eg: “$60 Acme Giftcard”.

Errors

  • UNKNOWN_ASSET

    403

    Asset id or PIN is incorrect.

  • DUPLICATE_ASSET

    403

    Asset already claimed by another account.

  • UNSUPPORTED_ASSET_TYPE

    403

    Unsupported asset type, origin, or issuer.

  • DENIED_BY_ASSET_PROVIDER

    403

    Asset exists, but is not enabled for use through Centrapay.

  • EXPIRED_BY_ASSET_PROVIDER

    403

    Asset exists, but it’s expired.

Request
POST/api/external-assets
    curl -X POST https://service.centrapay.com/api/external-assets \
+
POST/api/external-assets

Load an External Asset

Load an asset from a supported third-party issuer. Asset details will be obtained from the issuer.

Attributes

  • accountId

    stringrequired

    The Centrapay account which will own the asset.

  • category

    stringrequired

    The category an asset will be grouped by. Valid values: “giftcard”.

  • type

    stringrequired

    The Centrapay ledger corresponding to the asset. Valid values: “epay.nzd.main”, “epay.nzd.test”.

  • issuer

    stringrequired

    The asset issuer. Valid values: “ezipay”.

  • externalId

    stringrequired

    The issuer’s asset id such as card number.

  • pin

    string

    Additional secret required by the issuer for loading or redeeming the asset.

  • description

    string

    Description of the asset, eg: “$60 Acme Giftcard”.

Errors

  • UNKNOWN_ASSET

    403

    Asset id or PIN is incorrect.

  • DUPLICATE_ASSET

    403

    Asset already claimed by another account.

  • UNSUPPORTED_ASSET_TYPE

    403

    Unsupported asset type, origin, or issuer.

  • DENIED_BY_ASSET_PROVIDER

    403

    Asset exists, but is not enabled for use through Centrapay.

  • EXPIRED_BY_ASSET_PROVIDER

    403

    Asset exists, but it’s expired.

Request
POST/api/external-assets
curl -X POST https://service.centrapay.com/api/external-assets \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -30,10 +30,9 @@
     "issuer": "ezipay",
     "externalId": "23403321042",
     "pin": "3771"
-  }'
-  
Response
    {
+
Response
{
   "id": "L75M3L56N2PtBSt8g7uXLU",
   "category": "giftcard",
   "type": "epay.nzd.main",
@@ -49,7 +48,6 @@
   "balanceUpdatedAt": "2020-06-10T15:30:00.000Z",
   "expiresAt": "2020-12-31T00:00:00.000Z",
   "createdAt": "2020-05-01T12:30:00.000Z"
-}
-  
\ No newline at end of file diff --git a/api/funds-transfers/index.html b/api/funds-transfers/index.html index c84854227..bc11f4439 100644 --- a/api/funds-transfers/index.html +++ b/api/funds-transfers/index.html @@ -12,25 +12,24 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Funds Transfers

A funds transfer represents either a top up to or a withdrawal from a Centrapay wallet. Topping up a wallet consists of making a bank transfer from the user’s bank account to Centrapay. Once Centrapay has verified the transfer was successful a user will be given credit on their Centrapay wallet equal to the amount of the bank transfer.

+

Funds Transfers

A funds transfer represents either a top up to or a withdrawal from a Centrapay wallet. Topping up a wallet consists of making a bank transfer from the user’s bank account to Centrapay. Once Centrapay has verified the transfer was successful a user will be given credit on their Centrapay wallet equal to the amount of the bank transfer.


-
POST/api/topups

Create a Top Up

This endpoint allows you to create a topup.

Attributes

  • amount

    bignumberrequired

    Total amount of the transaction in cents

  • assetId

    stringrequired

    The id of the asset

  • bankAccountId

    stringrequired

    The id of the bank account

Errors

  • BANK_AUTHORITY_WALLET_MISMATCH

    403

    The wallet and the bank account for the top up request do not belong to the same account.

  • MAX_INFLIGHT_TOPUPS_EXCEEDED

    403

    The bank account already has ten pending top ups, which is the maximum a bank authority can have at any one time.

  • MAX_INFLIGHT_TOPUP_AMOUNT_EXCEEDED

    403

    The top up can not be created because it is above the max amount of funds a bank account can have pending at any one time. The max amount is $1000.00 for verified bank accounts and $100.00 for non-verified bank accounts.

  • QUOTA_EXCEEDED

    403

    The topup exceeds one or more top up quota limits. See Quota Error Response  API .

  • DIRECT_DEBIT_NOT_AUTHORIZED

    403

    Bank account requires authorization for top up. See bank accounts direct debit endpoint  API .

  • INVALID_WALLET_TYPE

    403

    The wallet type does not support top ups. See settlement wallets  API .

  • BANK_ACCOUNT_TYPE_NOT_CONFIGURED_FOR_TOPUP

    403

    The bank account type is not configured for topups. Only centrapay type bank accounts are configured.

Request
POST/api/topups
    curl -X POST https://service.centrapay.com/api/topups \
+
POST/api/topups

Create a Top Up

This endpoint allows you to create a topup.

Attributes

  • amount

    bignumberrequired

    Total amount of the transaction in cents

  • assetId

    stringrequired

    The id of the asset

  • bankAccountId

    stringrequired

    The id of the bank account

Errors

  • BANK_AUTHORITY_WALLET_MISMATCH

    403

    The wallet and the bank account for the top up request do not belong to the same account.

  • MAX_INFLIGHT_TOPUPS_EXCEEDED

    403

    The bank account already has ten pending top ups, which is the maximum a bank authority can have at any one time.

  • MAX_INFLIGHT_TOPUP_AMOUNT_EXCEEDED

    403

    The top up can not be created because it is above the max amount of funds a bank account can have pending at any one time. The max amount is $1000.00 for verified bank accounts and $100.00 for non-verified bank accounts.

  • QUOTA_EXCEEDED

    403

    The topup exceeds one or more top up quota limits. See Quota Error Response  API .

  • DIRECT_DEBIT_NOT_AUTHORIZED

    403

    Bank account requires authorization for top up. See bank accounts direct debit endpoint  API .

  • INVALID_WALLET_TYPE

    403

    The wallet type does not support top ups. See settlement wallets  API .

  • BANK_ACCOUNT_TYPE_NOT_CONFIGURED_FOR_TOPUP

    403

    The bank account type is not configured for topups. Only centrapay type bank accounts are configured.

Request
POST/api/topups
curl -X POST https://service.centrapay.com/api/topups \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "amount": "10000",
     "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
     "bankAccountId": "FRhAzzWpTKb5U7pZygQjjY"
-  }'
-  
Response
    {
+
Response
{
   "id": "hg2RfYTQ635tPBZEPJdCre",
   "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
   "bankAccountId": "FRhAzzWpTKb5U7pZygQjjY",
@@ -40,16 +39,14 @@
   "status": "created",
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-01T12:30:00.000Z"
-}
-  

-
GET/api/topups/{topupId}

Get Top Up

This endpoint allows you to retrieve a Top Up by id.

Attributes

No attributes.

Request
GET/api/topups/{topupId}
    curl https://service.centrapay.com/api/topups/WRhAxxWpTKb5U7pXyxQjjY \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "hg2RfYTQ635tPBZEPJdCre",
   "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
   "bankAccountId": "FRhAzzWpTKb5U7pZygQjjY",
@@ -59,16 +56,14 @@
   "status": "created",
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-01T12:30:00.000Z"
-}
-  

-
GET/api/topups

List Top Ups For Authorized Accounts

This endpoint allows you to list the Top Ups for authorized accounts.

Attributes

No attributes.

Request
GET/api/topups
    curl https://service.centrapay.com/api/topups \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "id": "5thg2RPBZEfYTPJdQ63Cre",
     "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
@@ -91,16 +86,14 @@
     "createdAt": "2020-05-01T12:30:00.000Z",
     "updatedAt": "2020-05-01T12:30:00.000Z"
   }
-]
-  

-
GET/api/accounts/{accountId}/topups

List Top Ups For an Account experimental

This endpoint allows you to list the Top Ups for an account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/topups
    curl https://service.centrapay.com/api/accounts/aBc932S9182qwCDqwer/topups \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "id": "5thg2RPBZEfYTPJdQ63Cre",
     "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
@@ -123,22 +116,20 @@
     "createdAt": "2020-05-01T12:30:00.000Z",
     "updatedAt": "2020-05-01T12:30:00.000Z"
   }
-]
-  

-
POST/api/withdrawals

Create Withdrawal experimental

This endpoint allows you to create a withdrawal.

Attributes

  • amount

    bignumberrequired

    Total amount of the transaction in cents

  • assetId

    stringrequired

    The id of the asset

  • bankAccountId

    stringrequired

    The id of the bank account

Errors

  • BANK_AUTHORITY_WALLET_MISMATCH

    403

    The wallet and the bank account for the withdrawal request do not belong to the same account.

  • INSUFFICIENT_WALLET_BALANCE

    403

    The wallet balance is less than the required amount.

  • INVALID_WALLET_TYPE

    403

    The wallet type does not support withdrawals. See settlement wallets  API .

  • BANK_ACCOUNT_TYPE_NOT_CONFIGURED_FOR_WITHDRAWAL

    403

    The bank account type is not configured for withdrawals. Only centrapay type bank accounts are configured.

Request
POST/api/withdrawals
    curl -X POST https://service.centrapay.com/api/withdrawals \
+
POST/api/withdrawals

Create Withdrawal experimental

This endpoint allows you to create a withdrawal.

Attributes

  • amount

    bignumberrequired

    Total amount of the transaction in cents

  • assetId

    stringrequired

    The id of the asset

  • bankAccountId

    stringrequired

    The id of the bank account

Errors

  • BANK_AUTHORITY_WALLET_MISMATCH

    403

    The wallet and the bank account for the withdrawal request do not belong to the same account.

  • INSUFFICIENT_WALLET_BALANCE

    403

    The wallet balance is less than the required amount.

  • INVALID_WALLET_TYPE

    403

    The wallet type does not support withdrawals. See settlement wallets  API .

  • BANK_ACCOUNT_TYPE_NOT_CONFIGURED_FOR_WITHDRAWAL

    403

    The bank account type is not configured for withdrawals. Only centrapay type bank accounts are configured.

Request
POST/api/withdrawals
curl -X POST https://service.centrapay.com/api/withdrawals \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "amount": "10000",
     "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
     "bankAccountId": "FRhAzzWpTKb5U7pZygQjjY"
-  }'
-  
Response
    {
+
Response
{
   "id": "hg2RfYTQ635tPBZEPJdCre",
   "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
   "bankAccountId": "FRhAzzWpTKb5U7pZygQjjY",
@@ -148,16 +139,14 @@
   "status": "created",
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-01T12:30:00.000Z"
-}
-  

-
GET/api/withdrawals/{withdrawalId}

Get Withdrawal experimental

This endpoint allows you to retrieve a Withdrawal by id.

Attributes

No attributes.

Errors

  • BANK_AUTHORITY_WALLET_MISMATCH

    403

    The wallet and the bank account for the withdrawal request do not belong to the same account.

  • INSUFFICIENT_WALLET_BALANCE

    403

    The wallet balance is less than the required amount.

  • INVALID_WALLET_TYPE

    403

    The wallet type does not support withdrawals. See settlement wallets  API .

  • BANK_ACCOUNT_TYPE_NOT_CONFIGURED_FOR_WITHDRAWAL

    403

    The bank account type is not configured for withdrawals. Only centrapay type bank accounts are configured.

Request
GET/api/withdrawals/{withdrawalId}
    curl https://service.centrapay.com/api/withdrawals/WRhAxxWpTKb5U7pXyxQjjY \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "hg2RfYTQ635tPBZEPJdCre",
   "assetId": "Te2uDM7xhDLWGVJU3nzwnh",
   "bankAccountId": "FRhAzzWpTKb5U7pZygQjjY",
@@ -167,16 +156,14 @@
   "status": "created",
   "createdAt": "2020-05-01T12:30:00.000Z",
   "updatedAt": "2020-05-01T12:30:00.000Z"
-}
-  

-
GET/api/accounts/{accountId}/withdrawals

List Withdrawals for an Account experimental

This endpoint allows you to list the withdrawals for an Account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/withdrawals
    curl https://service.centrapay.com/api/accounts/aBc932S9182qwCDqwer/withdrawals \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "id": "5thg2RPBZEfYTPJdQ63Cre",
@@ -201,16 +188,13 @@
       "updatedAt": "2020-05-01T12:30:00.000Z"
     }
   ]
-}
-  

-
POST/api/funds-transfers/{fundsTransferId}/abort

Abort Funds Transfer

This endpoint allows you to abort a Funds Transfer.

Attributes

No attributes.

Errors

  • ABORT_WITHDRAWAL_NOT_SUPPORTED

    403

    Aborting funds transfers of type withdrawal is not supported.

  • FUNDS_TRANSFER_ALREADY_COMPLETE

    403

    The funds transfer is already complete.

Request
POST/api/funds-transfers/{fundsTransferId}/abort
    curl -X POST https://service.centrapay.com/api/funds-transfers/5thg2RPBZEfYTPJdQ63Cre/abort \
-  -H "X-Api-Key: $api_key"
-  
Response
    {}
-  
Response
{}
\ No newline at end of file diff --git a/api/http-status-codes/index.html b/api/http-status-codes/index.html index ee09f43ef..679035530 100644 --- a/api/http-status-codes/index.html +++ b/api/http-status-codes/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

HTTP Status Codes

Centrapay APIs respond with 200, 400, 401, 403, 404, or 429 HTTP status codes. +

HTTP Status Codes

Centrapay APIs respond with 200, 400, 401, 403, 404, or 429 HTTP status codes. In rare cases endpoints may respond with 5xx status codes.

Some legacy or deprecated endpoints may have exceptions to the guidelines documented here. Any such exceptions will be documented on the endpoints.

@@ -28,11 +28,10 @@

This is a syntax failure. When you get these back, your application needs to change the way it behaves in order to get back the resource that you’re after.

Don’t try again, this is never going to work.

-
Response
    {
+
Response
{
   "statusCode": 400,
   "message": "amount is required"
-}
-  

Debugging

@@ -46,23 +45,21 @@

401 Unauthorized

API key or JWT is missing, expired or invalid. Go look at our Auth  API  documentation.

-
Response
    {
+
Response
{
   "statusCode": 401,
   "error": "Unauthorized",
   "message": "Missing authentication"
-}
-  

403 Forbidden

A 403 status indicates resource missing, permission denied or business rule violation.

Resource missing or permission denied

-
Response
      "statusCode": 403,
+
Response
  "statusCode": 403,
   "error": "Forbidden",
   "message": "Forbidden"
-}
-  
    @@ -75,33 +72,30 @@ is violated then a 403 is returned. Additional information will be included in the “message” field of the response body. The possible values for the “message” field will be documented on each endpoint.

    -
    Response
        {
    +
    Response
    {
       "statusCode": 403,
       "error": "Forbidden",
       "message": "INSUFFICIENT_BALANCE"
    -}
    -  

404 Route Not Found

Variant on a 400, there’s a bug in your code that means you’ve got a typo in the URL or HTTP method. Please check against examples in our documentation.

-
Response
    {
+
Response
{
   "statusCode": 404,
   "error": "Not Found",
   "message": "Not Found"
-}
-  

429 Too Many Requests

Centrapay API rate limits have been exceeded.

-
Response
    {
+
Response
{
   "statusCode": 429,
   "error": "Too Many Requests",
   "message": "RATE_LIMIT_EXCEEDED"
-}
-  

Debugging

diff --git a/api/integration-requests/index.html b/api/integration-requests/index.html index f958bf037..e048648d2 100644 --- a/api/integration-requests/index.html +++ b/api/integration-requests/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Integration Requests

An Integration Request allows Centrapay users to request the creation of an Integration  API  on a Centrapay Account.

+

Integration Requests

An Integration Request allows Centrapay users to request the creation of an Integration  API  on a Centrapay Account.

Integration Request Model

Attributes

  • id

    string

    The unique identifier of the Integration Request.

  • accountId

    string

    The Integration Request’s owning Centrapay Account  API  id.

  • merchantId

    string

    The Merchant  API  id for the Integration Request.

  • type

    object

    The type of the Integration Request. Refer to Integration Types.

  • status

    string

    The current status of the Integration Request. Supported values are active, available, pending, rejected and disabled.

  • terminalId

    string

    Epay terminalId for the Integration Request. Required if type is epay.

  • terminal

    object

    The terminal configuration. Required for all terminal vendors except Vista. Refer to Terminal.

  • product

    object

    The requested Epay gift card types to support. Refer to Product.

  • createdAt

    timestamp

    When the Integration Request was created.

  • createdBy

    crn

    The User or API Key that created the Integration Request.

  • updatedAt

    timestamp

    When the Integration Request was updated.

  • updatedBy

    crn

    The User or API Key that updated the Integration Request.

  • notifiedAt

    timestamp

    When the Integration Request was submitted to the terminal provider in order to enable the terminal for Centrapay acceptance.

@@ -67,7 +67,7 @@
NameDescription
epayAsset provider ePay
invencoTerminal vendor invenco
skyzerTerminal vendor skyzer
smartpayTerminal vendor smartpay
verifoneTerminal vendor Verifone
vistaTerminal vendor vista
windcaveTerminal vendor Windcave

-
POST/api/integration-requests

Create an Integration Request experimental

This endpoint allows you to create an Integration Request.

Attributes

  • merchantId

    stringrequired

    The Merchant  API  id for the Integration Request.

  • type

    objectrequired

    The type of the Integration Request. Refer to Integration Types.

  • terminal

    object

    The terminal configuration. Required for all terminal vendors except Vista. Refer to Terminal.

  • product

    object

    The requested Epay gift card types to support. Refer to Product.

Request
POST/api/integration-requests
    curl -X POST https://service.centrapay.com/api/integration-requests \
+
POST/api/integration-requests

Create an Integration Request experimental

This endpoint allows you to create an Integration Request.

Attributes

  • merchantId

    stringrequired

    The Merchant  API  id for the Integration Request.

  • type

    objectrequired

    The type of the Integration Request. Refer to Integration Types.

  • terminal

    object

    The terminal configuration. Required for all terminal vendors except Vista. Refer to Terminal.

  • product

    object

    The requested Epay gift card types to support. Refer to Product.

Request
POST/api/integration-requests
curl -X POST https://service.centrapay.com/api/integration-requests \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -77,10 +77,9 @@
       "terminalId": "002039390093939",
       "deviceId": "002-039-390"
     }
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "merchantId": "5ee0c486308f590260d9a07f",
@@ -94,16 +93,14 @@
     "terminalId": "002039390093939",
     "deviceId": "002-039-390"
   }
-}
-  

-
GET/api/integration-requests/{integrationRequestId}

Get an Integration Request experimental

This endpoint allows you to get an Integration Request.

Attributes

No attributes.

Request
GET/api/integration-requests/{integrationRequestId}
    curl https://service.centrapay.com/api/integration-requests/DKTs3U38hdhfEqwF1JKoT2 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "merchantId": "5ee0c486308f590260d9a07f",
@@ -118,19 +115,17 @@
     "name": "koha-card"
   },
   "notifiedAt": "2020-06-13T05:00:00.000Z"
-}
-  

-
GET/api/integration-requests

Search Integration Requests

Returns a paginated  API  response of Integration Requests.

Query Parameters

  • accountId

    string

    The Integration Request’s owning Centrapay Account id. Required unless caller has global read access permission.

  • type

    string

    The type of Integration Request.

  • pending

    boolean

    When set to true, only include Integration Requests with pending status.

Request
GET/api/integration-requests
    curl -G https://service.centrapay.com/api/integration-requests \
+
GET/api/integration-requests

Search Integration Requests

Returns a paginated  API  response of Integration Requests.

Query Parameters

  • accountId

    string

    The Integration Request’s owning Centrapay Account id. Required unless caller has global read access permission.

  • type

    string

    The type of Integration Request.

  • pending

    boolean

    When set to true, only include Integration Requests with pending status.

Request
GET/api/integration-requests
curl -G https://service.centrapay.com/api/integration-requests \
   -H "X-Api-Key: $api_key" \
   -d type=epay \
   -d pending=true \
-  -d accountId=Jaim1Cu1Q55uooxSens6yk
-  
Response
    {
+
Response
{
   "items": [
     {
       "id": "DKTs3U38hdhfEqwF1JKoT2",
@@ -148,20 +143,18 @@
       }
     }
   ]
-}
-  

-
PUT/api/integration-requests/{integrationRequestId}/configs

Configure Integration Request experimental

This endpoint allows you to supply configuration values for the Integration Request.

Attributes

  • terminalId

    string

    Epay terminalId for the Integration Request. Required if type is epay.

Request
PUT/api/integration-requests/{integrationRequestId}/configs
    curl -X PUT https://service.centrapay.com/api/integration-requests/DKTs3U38hdhfEqwF1JKoT2/configs \
+
PUT/api/integration-requests/{integrationRequestId}/configs

Configure Integration Request experimental

This endpoint allows you to supply configuration values for the Integration Request.

Attributes

  • terminalId

    string

    Epay terminalId for the Integration Request. Required if type is epay.

Request
PUT/api/integration-requests/{integrationRequestId}/configs
curl -X PUT https://service.centrapay.com/api/integration-requests/DKTs3U38hdhfEqwF1JKoT2/configs \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "terminalId": "11000021"
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "merchantId": "5ee0c486308f590260d9a07f",
@@ -175,27 +168,23 @@
   "product": {
     "name": "koha-card"
   }
-}
-  

-
GET/api/integration-requests/{integrationRequestId}/configs

Get Integration Request Configuration experimental

This endpoint allows you to get the configuration values for the Integration Request.

Attributes

No attributes.

Request
GET/api/integration-requests/{integrationRequestId}/configs
    curl https://service.centrapay.com/api/integration-requests/DKTs3U38hdhfEqwF1JKoT2/configs \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "terminalId": "11000021"
-}
-  

-
POST/api/integration-requests/{integrationRequestId}/activate

Activate Integration Request experimental

This endpoint allows you to activate an Integration Request.

Attributes

No attributes.

Errors

  • INTEGRATION_PARAM_MISSING

    403

    Integration Request needs updating with the required parameters before activating.

  • INTEGRATION_ALREADY_ACTIVATED

    403

    Integration Request is already activated.

Request
POST/api/integration-requests/{integrationRequestId}/activate
    curl -X POST https://service.centrapay.com/api/integration-requests/DKTs3U38hdhfEqwF1JKoT2/activate \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "merchantId": "5ee0c486308f590260d9a07f",
@@ -209,16 +198,13 @@
   "product": {
     "name": "koha-card"
   }
-}
-  

-
DELETE/api/integration-requests/{integrationRequestId}

Delete Integration Request experimental

This endpoint allows you to delete an Integration Request.

Attributes

No attributes.

Request
POST/api/integration-requests/{integrationRequestId}
    curl -X DELETE https://service.centrapay.com/api/integration-requests/DKTs3U38hdhfEqwF1JKoT2 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {}
-  
Response
{}
\ No newline at end of file diff --git a/api/integrations/index.html b/api/integrations/index.html index 1953d820b..8106cb4af 100644 --- a/api/integrations/index.html +++ b/api/integrations/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/api/introduction/index.html b/api/introduction/index.html index f293d84f4..129e705da 100644 --- a/api/introduction/index.html +++ b/api/introduction/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/api/invitations/index.html b/api/invitations/index.html index 8d6782dc1..12d27ced3 100644 --- a/api/invitations/index.html +++ b/api/invitations/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Invitations

An Invitation can be used to allow users to claim ownership of a resource on the Centrapay platform.

+

Invitations

An Invitation can be used to allow users to claim ownership of a resource on the Centrapay platform.

Invitation Model

Attributes

  • id

    string

    The Invitation’s unique identifier.

  • code

    string

    The Invitation code.

  • type

    string

    The type of invitation. Supported values are account-membership.

  • resourceId

    string

    The id of the related resource.

  • resourceType

    string

    The type of the related resource. Supported values are account.

  • expiresAt

    timestamp

    When the Invitation expires.

  • createdAt

    timestamp

    When the Invitation was created.

  • createdBy

    crn

    The User or API Key that created the Invitation.

  • updatedAt

    timestamp

    When the Invitation was updated.

  • updatedBy

    crn

    The User or API Key that updated the Invitation.

  • accepted

    boolean

    A flag indicating whether the Invitation has been accepted.

  • acceptedAt

    timestamp

    When the Invitation was accepted.

  • acceptedBy

    crn

    The User or API Key that accepted the Invitation.

  • acceptedByAccountId

    string

    The Account  API  id of the user accepting the Invitation.

  • recipientAlias

    string

    The email address of the user accepting the Invitation.

  • params

    object

    Params dependent on the Invitation type.

  • status

    string

    The status of the invitation. Possible values are created, sent, accepted and revoked.

@@ -27,21 +27,23 @@

Attributes

  • role

    string

    The role assigned to the recipient, for invitations of type account-membership.

  • accountName

    string

    The name of the account that the recipient is invited to, for invitations of type account-membership


-
POST/api/invitations

Create Invitation experimental

This endpoint allows you to create an Invitation.

Attributes

  • type

    stringrequired

    The type of invitation. Supported values are account-membership.

  • resourceId

    stringrequired

    The id of the related resource.

  • resourceType

    stringrequired

    The type of the related resource. Supported values are account.

  • recipientAlias

    stringrequired

    The email address of the user accepting the Invitation.

  • params

    objectrequired

    Params depending on the Invitation type.

  • role

    stringrequired

    The role that will be assigned to the user when the Invitation is accepted.

Errors

  • INVALID_ACCOUNT_TYPE

    403

    The resourceId is associated with an account with a non org type.

  • RECIPIENT_ALREADY_INVITED

    403

    An active invitation for this recipientAlias and resource already exists, or the recipient has already joined the resource.

Request
POST/api/invitations
    curl -X POST https://service.centrapay.com/api/invitations \
-  -H "X-Api-Key: $api_key" \
-  -H "Content-Type: application/json" \
-  -d '{
-    "type": "account-membership",
-    "resourceId": "Hopo4g34sLVdjEMBs2p19F",
-    "resourceType": "account",
-    "recipientAlias": "user@org.com",
-    "params": {
-      "role": "cashier"
-    }
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "code": "WIj211vFs9cNACwBb04vQw",
   "type": "account-membership",
@@ -58,16 +60,15 @@
     "accountName": "Centrapay Cafe"
   },
   "status": "created"
-}
-  

-
GET/api/invitations/code/{code}

Get Invitation By Code experimental

This endpoint allows you to retrieve an Invitation by code.

Attributes

No attributes.

Request
GET/api/invitations/code/{code}
    curl https://service.centrapay.com/api/invitations/code/WIj211vFs9cNACwBb04vQw \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "code": "WIj211vFs9cNACwBb04vQw",
   "type": "account-membership",
@@ -78,16 +79,15 @@
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedAt": "2021-08-25T00:02:49.488Z",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
GET/api/accounts/{accountId}/invitations

List Invitations by Account Id experimental

This endpoint allows you list Invitations for an Account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/invitations
    curl https://service.centrapay.com/api/accounts/{accountId}/invitations \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "id": "DKTs3U38hdhfEqwF1JKoT2",
@@ -126,21 +126,22 @@
       "status": "sent"
     }
   ]
-}
-  

-
POST/api/invitations/{invitationId}/accept

Accept Invitation experimental

This endpoint allows you to accept an Invitation.

Attributes

  • code

    stringrequired

    The Invitation code.

  • accountId

    stringrequired

    The Account  API  id of the user accepting the Invitation.

Errors

  • INVITATION_EXPIRED

    403

    The Invitation is expired.

  • INVITATION_ALREADY_ACCEPTED

    403

    The Invitation has already been accepted.

  • RECIPIENT_ALIAS_MISMATCH

    403

    The alias of the user accepting an Invitation is not the same as the recipientAlias of the Invitation.

  • INVITATION_REVOKED

    403

    The Invitation was revoked.

Request
POST/api/invitations/{invitationId}/accept
    curl -X POST https://service.centrapay.com/api/invitations/DKTs3U38hdhfEqwF1JKoT2/accept \
-  -H "X-Api-Key: $api_key" \
-  -H "Content-Type: application/json" \
-  -d '{
-    "code": "WIj211vFs9cNACwBb04vQw",
-    "accountId": "Jaim1Cu1Q55uooxSens6yk"
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "code": "WIj211vFs9cNACwBb04vQw",
   "type": "account-membership",
@@ -155,16 +156,15 @@
   "acceptedByAccountId": "Jaim1Cu1Q55uooxSens6yk",
   "updatedAt": "2021-08-25T10:12:22.122Z",
   "updatedBy": "crn::user:e2837e88-d408-11eb-8eac-3e22fb52e878"
-}
-  

-
POST/api/invitations/{invitationId}/revoke

Revoke Invitation experimental

This endpoint allows you to revoke an Invitation.

Attributes

No attributes

Errors

  • INVITATION_EXPIRED

    403

    The Invitation is expired.

  • INVITATION_ACCEPTED

    403

    The Invitation has already been accepted.

Request
POST/api/invitations/{invitationId}/revoke
    curl -X POST https://service.centrapay.com/api/invitations/DKTs3U38hdhfEqwF1JKoT2/revoke \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "code": "WIj211vFs9cNACwBb04vQw",
   "type": "account-membership",
@@ -181,7 +181,6 @@
   "updatedAt": "2021-08-25T00:00:00.000Z",
   "updatedBy": "crn::user:1234",
   "status": "revoked"
-}
-  
\ No newline at end of file diff --git a/api/legacy-payment-requests/index.html b/api/legacy-payment-requests/index.html index a9f3beaa4..fa9dd9f2b 100644 --- a/api/legacy-payment-requests/index.html +++ b/api/legacy-payment-requests/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Legacy Payment Requests

Centrapay Payment Requests are serviced via two sets of endpoints; the “next” +

Legacy Payment Requests

Centrapay Payment Requests are serviced via two sets of endpoints; the “next” version (documented Payment Requests  API ) and the “legacy” version (documented on this page). These endpoints are deprecated.

@@ -77,15 +77,14 @@
Asset TypeLedger Param ValueAuthorization Param Value
centrapay.nzd.maincentrapay.nzd.mainCentrapay wallet id
centrapay.nzd.testcentrapay.nzd.testCentrapay wallet id
epay.nzd.mainepay.nzd.mainCentrapay asset id
bitcoin.maing.crypto.bitcoin.mainnetBitcoin transaction id

-
POST/payments/api/requests.create

Create a Payment Request deprecated

This endpoint allows you to create a Payment Request.

Attributes

  • amount

    numberrequired

    The amount in the minimum divisible units of the denominated asset that would satisfy the payment.

  • asset

    stringrequired

    The Asset Type  API  for the payment.

  • merchantId

    stringrequired

    The ID of the Merchant creating the request.

  • clientId

    string

    The ID of the merchant specific client configuration.

  • description

    string

    A human readable description of the payment.

  • externalReference

    string

    An external reference to the Payment Request.

  • notifyUrl

    string

    The URL that will receive the webhook POST requests.

  • patronCode

    string

    The id of a Patron Code  API  the payment request is attached to.

  • paymentExpirySeconds

    string

    The expiry seconds used to configure the Payment Request expiry.

  • terminalId

    string

    The software or logical id of the payment terminal.

  • deviceId

    string

    The hardware id or serial number of the payment terminal.

Errors

  • CHECKSUM_FAILED

    400

    patronCode luhn checksum digit doesn’t pass.

  • PATRON_CODE_INVALID

    403

    patronCode doesn’t exist or has expired.

  • MERCHANT_CONFIGURATION_NOT_FOUND

    403

    There was no merchant configuration found for the supplied merchantId and clientId.

  • NO_AVAILABLE_PAYMENT_OPTIONS

    403

    No payment options match the requested payment parameters.

Request
POST/payments/api/requests.create
    curl -X POST https://service.centrapay.com/payments/api/requests.create \
+
POST/payments/api/requests.create

Create a Payment Request deprecated

This endpoint allows you to create a Payment Request.

Attributes

  • amount

    numberrequired

    The amount in the minimum divisible units of the denominated asset that would satisfy the payment.

  • asset

    stringrequired

    The Asset Type  API  for the payment.

  • merchantId

    stringrequired

    The ID of the Merchant creating the request.

  • clientId

    string

    The ID of the merchant specific client configuration.

  • description

    string

    A human readable description of the payment.

  • externalReference

    string

    An external reference to the Payment Request.

  • notifyUrl

    string

    The URL that will receive the webhook POST requests.

  • patronCode

    string

    The id of a Patron Code  API  the payment request is attached to.

  • paymentExpirySeconds

    string

    The expiry seconds used to configure the Payment Request expiry.

  • terminalId

    string

    The software or logical id of the payment terminal.

  • deviceId

    string

    The hardware id or serial number of the payment terminal.

Errors

  • CHECKSUM_FAILED

    400

    patronCode luhn checksum digit doesn’t pass.

  • PATRON_CODE_INVALID

    403

    patronCode doesn’t exist or has expired.

  • MERCHANT_CONFIGURATION_NOT_FOUND

    403

    There was no merchant configuration found for the supplied merchantId and clientId.

  • NO_AVAILABLE_PAYMENT_OPTIONS

    403

    No payment options match the requested payment parameters.

Request
POST/payments/api/requests.create
curl -X POST https://service.centrapay.com/payments/api/requests.create \
   -H "X-Api-Key: $api_key" \
   -d merchantId=b0792018-6efc-4bca-a148-83bc57ff75b9 \
   -d clientId=b80c361f-805a-405c-b0af-366d3b5bd4ef \
   -d amount=300 \
-  -d asset=NZD
-  
Response
    {
+
Response
{
   "clientId": "b80c361f-805a-405c-b0af-366d3b5bd4ef",
   "denomination": {
     "amount": 350,
@@ -114,17 +113,15 @@
   "requestId": "9e98c00c-1556-4c95-ba78-2dd1fc97fc5b",
   "createdAt": "2019-12-10T22:30:51.500Z",
   "updatedAt": "2019-12-10T22:31:04.983Z"
-}
-  

-
GET/payments/api/requests.info

Get a Payment Request deprecated

This endpoint allows you to receive Payment Request information.

Attributes

  • requestId

    stringrequired

    The payment requestId that is generated when requests.create is called.

Request
GET/payments/api/requests.info
    curl -G https://service.centrapay.com/payments/api/requests.info \
+
GET/payments/api/requests.info

Get a Payment Request deprecated

This endpoint allows you to receive Payment Request information.

Attributes

  • requestId

    stringrequired

    The payment requestId that is generated when requests.create is called.

Request
GET/payments/api/requests.info
curl -G https://service.centrapay.com/payments/api/requests.info \
   -H "X-Api-Key: $api_key" \
-  -d requestId=TyqV56mEkNLUeiY2QskHNR
-  
Response
    {
+
Response
{
   "requestId": "TyqV56mEkNLUeiY2QskHNR",
   "shortCode": "CP-C7F-ZS5",
   "merchantId": "5efbe17d96c083633e2b9241",
@@ -150,19 +147,17 @@
   "updatedAt": "2021-11-29T23:04:54.253Z",
   "liveness": "test",
   "paymentExpirySeconds": 120
-}
-  

-
POST/payments/api/requests.pay

Pay a Payment Request deprecated

This endpoint allows you to pay a Payment Request.

Attributes

Errors

  • REQUEST_EXPIRED

    403

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    403

    Action cannot be completed because the request has been paid.

  • REQUEST_CANCELLED

    403

    Action cannot be completed because the request has already been cancelled.

  • INVALID_ASSET_TYPE

    403

    The merchant is not configured with the provided asset type.

  • INACTIVE_ASSET

    403

    The asset is not spendable. It may have been disabled, expired, or already spent.

  • INVALID_MERCHANT_CONFIG

    403

    The merchant is not configured properly to satisfy the payment request. This could be due to incorrect information, or the merchant’s credentials might be blocked by an external service.

  • QUOTA_EXCEEDED

    403

    The payment pay request exceeds the allowed spend quota supplied.

  • INSUFFICIENT_ASSET_VALUE

    403

    The asset has insufficient funds to pay the payment request or the transaction amount received by Centrapay is less than the total of the payment.

  • ASSET_REDEMPTION_DENIED

    403

    The asset redemption has been unsuccessful due to an error with provided payment parameters, the merchant, or the asset.

Request
POST/payments/api/requests.pay
    curl -X POST https://service.centrapay.com/payments/api/requests.pay \
+
POST/payments/api/requests.pay

Pay a Payment Request deprecated

This endpoint allows you to pay a Payment Request.

Attributes

Errors

  • REQUEST_EXPIRED

    403

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    403

    Action cannot be completed because the request has been paid.

  • REQUEST_CANCELLED

    403

    Action cannot be completed because the request has already been cancelled.

  • INVALID_ASSET_TYPE

    403

    The merchant is not configured with the provided asset type.

  • INACTIVE_ASSET

    403

    The asset is not spendable. It may have been disabled, expired, or already spent.

  • INVALID_MERCHANT_CONFIG

    403

    The merchant is not configured properly to satisfy the payment request. This could be due to incorrect information, or the merchant’s credentials might be blocked by an external service.

  • QUOTA_EXCEEDED

    403

    The payment pay request exceeds the allowed spend quota supplied.

  • INSUFFICIENT_ASSET_VALUE

    403

    The asset has insufficient funds to pay the payment request or the transaction amount received by Centrapay is less than the total of the payment.

  • ASSET_REDEMPTION_DENIED

    403

    The asset redemption has been unsuccessful due to an error with provided payment parameters, the merchant, or the asset.

Request
POST/payments/api/requests.pay
curl -X POST https://service.centrapay.com/payments/api/requests.pay \
   -H "X-Api-Key: $api_key" \
   -d authorization=4a936ad82d8e51ae0afc317e944bfa569d935a45206b49b67117ee8aaa04a3b1 \
   -d ledger=g.crypto.bitcoin.mainnet \
-  -d requestId=7d2b1d52-b609-4ccd-b4cc-c4a9af881bd9
-  
Response
    {
+
Response
{
   "createdAt": "2019-12-10T22:30:51.500Z",
   "currencyExchange": {
     "asset": "BTC",
@@ -184,17 +179,15 @@
   "status": "Success",
   "type": "txBitcoin",
   "version": 1
-}
-  

-
POST/payments/api/requests.cancel

Cancel a Payment Request deprecated

This endpoint allows you to cancel a Payment Request.

Attributes

  • requestId

    stringrequired

    The payment requestId that is generated when requests.create is called.

Errors

  • REQUEST_NOT_FOUND

    400

    The provided request doesn’t exist.

  • REQUEST_EXPIRED

    400

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    404

    Action cannot be completed because the request has been paid.

Request
POST/payments/api/requests.cancel
    curl -X POST https://service.centrapay.com/payments/api/requests.cancel \
+
POST/payments/api/requests.cancel

Cancel a Payment Request deprecated

This endpoint allows you to cancel a Payment Request.

Attributes

  • requestId

    stringrequired

    The payment requestId that is generated when requests.create is called.

Errors

  • REQUEST_NOT_FOUND

    400

    The provided request doesn’t exist.

  • REQUEST_EXPIRED

    400

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    404

    Action cannot be completed because the request has been paid.

Request
POST/payments/api/requests.cancel
curl -X POST https://service.centrapay.com/payments/api/requests.cancel \
   -H "X-Api-Key: $api_key" \
-  -d requestId=a95b3b0d-1278-4613-8772-20d146065a2e
-  
Response
    {
+
Response
{
   "merchantName": "Coffee Shop",
   "status": "cancelled",
   "denomination": {
@@ -207,23 +200,20 @@
   "requestId": "a95b3b0d-1278-4613-8772-20d146065a2e",
   "merchantId": "b0792018-6efc-4bca-a148-83bc57ff75b9",
   "description": "Coffee"
-}
-  

POST/payments/api/requests.void

Void a Payment Request deprecated

This endpoint allows you to void a Payment Request.

Attributes

  • requestId

    stringrequired

    The payment requestId that is generated when requests.create is called.

Errors

Voiding a payment request can cause it to be cancelled or refunded. Therefore, this endpoint can give the same error responses as requests.cancel and transactions.refund. -After 24 hours voiding a payment request will be disallowed, however a refund can still be made against the payment request if it has been paid successfully.

  • REQUEST_NOT_FOUND

    400

    The provided request doesn’t exist.

  • REQUEST_EXPIRED

    400

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    404

    Action cannot be completed because the request has been paid.

Request
POST/payments/api/requests.void
    curl -X POST https://service.centrapay.com/payments/api/requests.void \
+After 24 hours voiding a payment request will be disallowed, however a refund can still be made against the payment request if it has been paid successfully.

  • REQUEST_NOT_FOUND

    400

    The provided request doesn’t exist.

  • REQUEST_EXPIRED

    400

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    404

    Action cannot be completed because the request has been paid.

Request
POST/payments/api/requests.void
curl -X POST https://service.centrapay.com/payments/api/requests.void \
   -H "X-Api-Key: $api_key" \
-  -d requestId=a95b3b0d-1278-4613-8772-20d146065a2e
-  
Response
    {
+
Response
{
   "type": "voidCancel",
   "status": "Success",
   "message": "string"
-}
-  

@@ -236,13 +226,12 @@ attempting to refund the same transaction we return a successful response if the amount of the request is the same both times but do not process another refund, this is because we assume it to be a repeat request. If the amount -is different you will get a REPEAT_REFERENCE error message.

Refund a Pre Auth Payment Request with Confirmations

The legacy refund endpoint cannot be used to refund Pre Auth Payment Requests with Confirmations. Please use the current refund endpoint  API  instead.

Attributes

  • transactionId

    stringrequired

    The transaction to refund. The transaction id for a payment can be obtained from a webhook notification or from requests.info.

  • amount

    stringrequired

    The amount to refund in cents.

  • externalReference

    string

    A reference supplied by the merchant that must be unique for each refund of that transaction, can be anything you want but it must be unique.

Errors

  • ALREADY_REFUNDED

    400

    The transaction has already been refunded.

  • INVALID_AMOUNT

    400

    The refund requested is greater than the transaction amount.

  • REPEAT_REFERENCE

    400

    A separate refund request for the same transaction has the same external reference, trying to refund the same transaction twice with the same external reference is not allowed. If the amount of the refund is the same we assume it is a repeat request and return 200.

  • PARTIAL_REFUNDS_NOT_ALLOWED

    403

    The asset does not support partial refunds.

  • INACTIVE_ASSET

    403

    The asset is not refundable. It may have been disabled, expired, or already refunded.

  • REFUND_NOT_SUPPORTED

    403

    The asset type does not support refunds.

  • REFUND_WINDOW_EXCEEDED

    403

    The time since the payment exceeds the window of time a transaction can be refunded in.

Request
POST/payments/api/transactions.refund
    curl -X POST https://service.centrapay.com/payments/api/transactions.refund \
+is different you will get a REPEAT_REFERENCE error message.

Refund a Pre Auth Payment Request with Confirmations

The legacy refund endpoint cannot be used to refund Pre Auth Payment Requests with Confirmations. Please use the current refund endpoint  API  instead.

Attributes

  • transactionId

    stringrequired

    The transaction to refund. The transaction id for a payment can be obtained from a webhook notification or from requests.info.

  • amount

    stringrequired

    The amount to refund in cents.

  • externalReference

    string

    A reference supplied by the merchant that must be unique for each refund of that transaction, can be anything you want but it must be unique.

Errors

  • ALREADY_REFUNDED

    400

    The transaction has already been refunded.

  • INVALID_AMOUNT

    400

    The refund requested is greater than the transaction amount.

  • REPEAT_REFERENCE

    400

    A separate refund request for the same transaction has the same external reference, trying to refund the same transaction twice with the same external reference is not allowed. If the amount of the refund is the same we assume it is a repeat request and return 200.

  • PARTIAL_REFUNDS_NOT_ALLOWED

    403

    The asset does not support partial refunds.

  • INACTIVE_ASSET

    403

    The asset is not refundable. It may have been disabled, expired, or already refunded.

  • REFUND_NOT_SUPPORTED

    403

    The asset type does not support refunds.

  • REFUND_WINDOW_EXCEEDED

    403

    The time since the payment exceeds the window of time a transaction can be refunded in.

Request
POST/payments/api/transactions.refund
curl -X POST https://service.centrapay.com/payments/api/transactions.refund \
   -H "X-Api-Key: $api_key" \
   -d transactionId=7d2b1d52-b609-4ccd-b4cc-c4a9af881bd9 \
-  -d amount=100
-  
Response
    {
+
Response
{
   "createdAt": "2019-12-10T22:30:51.500Z",
   "currencyExchange": {
     "asset": "BTC",
@@ -264,8 +253,7 @@
   "status": "Success",
   "type": "txRefund",
   "version": 1
-}
-  

@@ -331,17 +319,16 @@ below but with transactionType set to REFUND.

Webhook Payload

The body of the webhook is a JSON document with the following format:

-
Example
    {
+
Example
{
   "token": "${JWT}"
-}
-  

The decoded JWT will contain a transaction property with a transactionType that indicates the event type. Depending on the type of event, the payload will also contain additional details about the transaction and payment request. For example:

-
Example
    {
+
Example
{
   "transaction": {
     "transactionType": "REFUND",
     "request": {
@@ -352,8 +339,7 @@
       }
     }
   }
-}
-  

Webhook Payload Fields

@@ -410,15 +396,14 @@

Webhook JWT Validation

A webhook JWT can be validated by checking the signature against the Centrapay Webhook public key:

-
Example
    -----BEGIN PUBLIC KEY-----
+
Example
-----BEGIN PUBLIC KEY-----
 MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt+vW2fE0mLLmdzJtYrz7J9q/yEXl
 gmIjCXdv3VNvYfTsaBO5PJNiaD3l9lD8PzEQu31ePsOG81mDVuo40+dgLg==
------END PUBLIC KEY-----
-  

Decoded Webhook JWT Examples

-
Transaction Completed Successfully
    {
+
Transaction Completed Successfully
{
   "transaction": {
     "transactionId": "E6ctbmgmkgZ3xnPk3BkGvb",
     "transactionType": "PURCHASE",
@@ -436,11 +421,10 @@
     "type": "BITCOIN",
     "authCode": "961241"
   }
-}
-  
-
Payment Request Cancelled
    {
+
Payment Request Cancelled
{
   "transaction": {
     "transactionType": "CANCELLED",
     "request": {
@@ -453,7 +437,6 @@
       }
     }
   }
-}
-  
\ No newline at end of file diff --git a/api/managed-integrations/index.html b/api/managed-integrations/index.html index c0f70c1b2..f07de3a93 100644 --- a/api/managed-integrations/index.html +++ b/api/managed-integrations/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Managed Integrations

A Managed Integration is an Integration  API  which a third party can control.

+

Managed Integrations

A Managed Integration is an Integration  API  which a third party can control.

Managed Integration Model

Attributes

  • id

    string

    The Managed Integration’s unique identifier.

  • type

    string

    The type of Managed Integration. Supported types are paypal-referral.

  • enabled

    boolean

    Flag indicating whether the Managed Integration should become active or inactive.

  • status

    string

    Current status of the Managed Integration. Supported values are created, pending, provisioning, active, inactive and archived.

  • externalId

    string

    Field used to reference an id from an external system.

  • params

    object

    Params depending on the Managed Integration type.

  • createdAt

    timestamp

    When the Managed Integration was created.

  • createdBy

    crn

    The User or API Key that created the Managed Integration.

  • updatedAt

    timestamp

    When the Managed Integration was updated.

  • updatedBy

    crn

    The User or API Key that updated the Managed Integration.

  • claimedByAccountId

    string

    Centrapay account id used to claim the Managed Integration.

  • claimedBy

    crn

    The User or API Key that claimed the Managed Integration.

  • claimedAt

    timestamp

    When the Managed Integration was claimed.

  • invitation

    object

    A summary of the associated Invitation  API . See Invitation Summary.

  • inProgress

    boolean

    Flag indicating whether a status transition is in progress.

  • test

    boolean

    A flag which is present if the Managed Integration is for testing.

@@ -32,7 +32,7 @@

paypal-referral

  • centrapayMerchantId

    string

    The ID of the Centrapay merchant that will be onboarded.

  • email

    string

    The email address to send the PayPal referral to.


-
PUT/api/managed-integrations/{type}/{externalId}

Create or Update Managed Integration

This endpoint allows you to create or update a Managed Integration.

Attributes

  • enabled

    booleanrequired

    Flag indicating whether the Managed Integration should become active or inactive.

  • params

    objectrequired

    Params depending on the Managed Integration type.

  • test

    boolean

    Flag indicating the Managed Integration is for testing, this cannot be changed once the resource has been created.

Errors

  • INVALID_PARAMS

    400

    Invalid Params provided for Managed Integration type.

  • MERCHANT_LIVENESS_MISMATCH

    403

    The test flag on the merchant doesn’t match the test flag on the paypal-referral managed integration.

  • MERCHANT_NOT_FOUND

    403

    The merchant is not found with the centrapayMerchantId on the paypal-referral managed integration.

Request
PUT/api/managed-integrations/{type}/{externalId}
    curl -X PUT https://service.centrapay.com/api/managed-integrations/paypal-referral/DKTs3U38hdhfEqwF1JKoT2 \
+
PUT/api/managed-integrations/{type}/{externalId}

Create or Update Managed Integration

This endpoint allows you to create or update a Managed Integration.

Attributes

  • enabled

    booleanrequired

    Flag indicating whether the Managed Integration should become active or inactive.

  • params

    objectrequired

    Params depending on the Managed Integration type.

  • test

    boolean

    Flag indicating the Managed Integration is for testing, this cannot be changed once the resource has been created.

Errors

  • INVALID_PARAMS

    400

    Invalid Params provided for Managed Integration type.

  • MERCHANT_LIVENESS_MISMATCH

    403

    The test flag on the merchant doesn’t match the test flag on the paypal-referral managed integration.

  • MERCHANT_NOT_FOUND

    403

    The merchant is not found with the centrapayMerchantId on the paypal-referral managed integration.

Request
PUT/api/managed-integrations/{type}/{externalId}
curl -X PUT https://service.centrapay.com/api/managed-integrations/paypal-referral/DKTs3U38hdhfEqwF1JKoT2 \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -41,10 +41,9 @@
       "centrapayMerchantId": "5ffcaf432003060007b98343",
       "email": "test@centrapay.com"
     }
-  }'
-  
Response
    {
+
Response
{
   "id": "5ee0c486308f590260d9a07f",
   "type": "paypal-referral",
   "externalId": "DKTs3U38hdhfEqwF1JKoT2",
@@ -62,16 +61,14 @@
   "createdBy": "crn:BIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedAt": "2020-06-12T01:17:46.499Z",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
GET/api/managed-integrations/{id}

Get Managed Integration

This endpoint allows you to retrieve a Managed Integration by id.

Attributes

No attributes.

Request
GET/api/managed-integrations/{id}
    curl https://service.centrapay.com/api/managed-integrations/dh375hdh08f590260d9a07f \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "5ee0c486308f590260d9a07f",
   "type": "paypal-referral",
   "externalId": "DKTs3U38hdhfEqwF1JKoT2",
@@ -89,7 +86,6 @@
   "createdBy": "crn:BIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedAt": "2020-06-12T01:17:46.499Z",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  
\ No newline at end of file diff --git a/api/media-uploads/index.html b/api/media-uploads/index.html index 472139f36..efd3bf3a1 100644 --- a/api/media-uploads/index.html +++ b/api/media-uploads/index.html @@ -12,41 +12,37 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Media Uploads

Media Upload Model

+

Media Uploads

Media Upload Model

Attributes

  • id

    string

    The Media Upload’s unique identifier.

  • accountId

    string

    The Media Upload’s owning Centrapay Account id.

  • mimeType

    string

    The media (MIME) type of the upload.

  • fileName

    string

    The file name of the upload.

  • createdAt

    timestamp

    When the Media Upload was created.

  • createdBy

    crn

    The User or API Key that created the Media Upload.

  • updatedAt

    timestamp

    When the Media Upload was updated.

  • updatedBy

    crn

    The User or API Key that updated the Media Upload.

  • uploadUrl

    string

    A presigned URL that gives users time-limited permission to upload media.


-
POST/api/media-uploads

Create a presigned URL for Media Upload experimental

This endpoint allows you to upload a media file to Centrapay. It returns a presigned URL that can be used to download the media file.

Attributes

  • accountId

    stringrequired

    The Media Upload’s owning Centrapay Account id.

  • mimeType

    stringrequired

    The media (MIME) type of the upload.

  • fileName

    stringrequired

    The file name of the upload.

Request
POST/api/media-uploads
    curl -X POST https://service.centrapay.com/api/media-uploads \
+
POST/api/media-uploads

Create a presigned URL for Media Upload experimental

This endpoint allows you to upload a media file to Centrapay. It returns a presigned URL that can be used to download the media file.

Attributes

  • accountId

    stringrequired

    The Media Upload’s owning Centrapay Account id.

  • mimeType

    stringrequired

    The media (MIME) type of the upload.

  • fileName

    stringrequired

    The file name of the upload.

Request
POST/api/media-uploads
curl -X POST https://service.centrapay.com/api/media-uploads \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "accountId": "Jaim1Cu1Q55uooxSens6yk",
     "mimeType": "image/png",
     "fileName": "image.png"
-  }'
-  
Response
    {
+
Response
{
   "id": "DKTs3U38hdhfEqwF1JKoT2",
   "uploadUrl": "https://media-upload.centrapay.com/image.png?jhbdsfau67ewejshb=487hsdjhbdgs743"
-}
-  

-
GET/api/media-uploads/{mediaUploadId}/location

Get Media Upload Location experimental

This endpoint allows you to retrieve the upload location of a media file.

Attributes

No attributes.

Request
GET/api/media-uploads/{mediaUploadId}/location
    curl https://service.centrapay.com/api/media-uploads/DKTs3U38hdhfEqwF1JKoT2/location \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "url": "https://media-upload.centrapay.com/image.png?jhbdsfau67ewejshb=487hsdjhbdgs743"
-}
-  
\ No newline at end of file diff --git a/api/merchant-configs/index.html b/api/merchant-configs/index.html index 803c12159..2fdb82832 100644 --- a/api/merchant-configs/index.html +++ b/api/merchant-configs/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Merchant Configs

A Merchant Config defines the available payment options for paying a Payment Request  API .

+

Merchant Configs

A Merchant Config defines the available payment options for paying a Payment Request  API .

Merchant Config Model

Attributes

  • paymentOptions

    array
  • createdAt

    timestamp

    When the Merchant Config was created.

  • createdBy

    crn

    The User or API Key that created the Merchant Config.

  • updatedAt

    timestamp

    When the Merchant Config was updated.

  • updatedBy

    crn

    The User or API Key that updated the Merchant Config.

  • allowedRedirectUrls

    arrayexperimental

    Allowed prefixes for the redirectUrl property on Payment Requests created with this Config.

@@ -31,7 +31,7 @@

Test payment options should never be used for live merchant configurations.


-
POST/api/merchants/{merchantId}/configs

Create Merchant Config

This endpoint allows you to create a Merchant Config for a Merchant.

Attributes

  • paymentOptions

    arrayrequired
  • allowedRedirectUrls

    arrayexperimental

    Allowed prefixes for the redirectUrl property on Payment Requests created with this Config.

Errors

Request
POST/api/merchants/{merchantId}/configs
    curl -X POST https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/configs \
+
POST/api/merchants/{merchantId}/configs

Create Merchant Config

This endpoint allows you to create a Merchant Config for a Merchant.

Attributes

  • paymentOptions

    arrayrequired
  • allowedRedirectUrls

    arrayexperimental

    Allowed prefixes for the redirectUrl property on Payment Requests created with this Config.

Errors

Request
POST/api/merchants/{merchantId}/configs
curl -X POST https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/configs \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -49,10 +49,9 @@
         "farmlandsMerchantNumber": "DbgY2SyD5M85zkePJjsQEf"
       }
     ]
-  }'
-  
Response
    {
+
Response
{
   "id": "5ee168e8597be5002af7b454",
   "merchantId": "5ee0c486308f590260d9a07f",
   "createdAt": "2021-11-12T01:17:46.499Z",
@@ -73,16 +72,14 @@
       "farmlandsMerchantNumber": "DbgY2SyD5M85zkePJjsQEf"
     }
   ]
-}
-  

-
GET/api/merchants/{merchantId}/configs/{configId}

Get Merchant Config

This endpoint allows you to retrieve a Merchant Config by id.

Attributes

No attributes.

Request
GET/api/merchants/{merchantId}/configs/{configId}
    curl https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/configs/5ee168e8597be5002af7b454 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "5ee168e8597be5002af7b454",
   "merchantId": "5ee0c486308f590260d9a07f",
   "createdAt": "2021-11-12T01:17:46.499Z",
@@ -95,16 +92,14 @@
       "farmlandsMerchantNumber": "DbgY2SyD5M85zkePJjsQEf"
     }
   ]
-}
-  

-
GET/api/merchants/{merchantId}/configs

List Merchant Configs

This endpoint allows you to retrieve a list of Merchant Configs.

Attributes

No attributes.

Request
GET/api/merchants/{merchantId}/configs
    curl https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/configs \
-  -H "X-Api-Key: $api_key"
-  
Response
    [
+
Response
[
   {
     "id": "5ee168e8597be5002af7b454",
     "merchantId": "5ee0c486308f590260d9a07f",
@@ -132,12 +127,11 @@
       }
     ]
   }
-]
-  

-
PUT/api/merchants/{merchantId}/configs/{configId}

Update Merchant Config

This endpoint allows you to update a Merchant Config.

Attributes

  • paymentOptions

    arrayrequired
  • allowedRedirectUrls

    arrayexperimental

    Allowed prefixes for the redirectUrl property on Payment Requests created with this Config.

Errors

Request
PUT/api/merchants/{merchantId}/configs/{configId}
    curl -X PUT https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/configs/5ee168e8597be5002af7baed \
+
PUT/api/merchants/{merchantId}/configs/{configId}

Update Merchant Config

This endpoint allows you to update a Merchant Config.

Attributes

  • paymentOptions

    arrayrequired
  • allowedRedirectUrls

    arrayexperimental

    Allowed prefixes for the redirectUrl property on Payment Requests created with this Config.

Errors

Request
PUT/api/merchants/{merchantId}/configs/{configId}
curl -X PUT https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/configs/5ee168e8597be5002af7baed \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -154,10 +148,9 @@
         "farmlandsMerchantNumber": "DbgY2SyD5M85zkePJjsQEf"
       }
     ]
-  }'
-  
Response
    {
+
Response
{
   "id": "5ee168e8597be5002af7baed",
   "merchantId": "5ee0c486308f590260d9a07f",
   "createdAt": "2021-09-12T01:17:46.499Z",
@@ -177,8 +170,7 @@
       "farmlandsMerchantNumber": "DbgY2SyD5M85zkePJjsQEf"
     }
   ]
-}
-  

\ No newline at end of file diff --git a/api/merchants/index.html b/api/merchants/index.html index e26c0d90e..a89680459 100644 --- a/api/merchants/index.html +++ b/api/merchants/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Merchants

A merchant is an initiator of Payment Requests  API . A Merchant has Merchant Configs  API  +

Merchants

A merchant is an initiator of Payment Requests  API . A Merchant has Merchant Configs  API  which define the payment methods available for a Payment Request.

Merchant Model

Attributes

@@ -116,7 +116,7 @@

Attributes

  • id

    string

    Product’s unique identifier.


-
POST/api/merchants

Create Merchant

This endpoint allows you to create a Merchant.

Attributes

  • accountId

    stringrequired

    Id of Merchant’s owning Centrapay account.

  • name

    stringrequired

    Merchant name.

  • country

    stringrequired

    Merchant ISO 3166 country code. Must match the “region” on the Account  API .

  • test

    booleanrequiredexperimental

    Flag indicating merchant is for testing.

  • settlementConfig

    objectexperimental
  • location

    locationexperimental

    Physical Location of Merchant. It is highly recommended that you provide this otherwise, users won’t be able to find you with our Merchant Search API if they perform a origin + distance query.

Errors

  • BANK_ACCOUNT_MISMATCH

    403

    The bank account in the settlement config does not belong to the same account.

  • ACCOUNT_REGION_MISMATCH

    403

    The merchant’s “country” does not match the “region” on the Account.

Request
POST/api/merchants
    curl -X POST https://service.centrapay.com/api/merchants \
+
POST/api/merchants

Create Merchant

This endpoint allows you to create a Merchant.

Attributes

  • accountId

    stringrequired

    Id of Merchant’s owning Centrapay account.

  • name

    stringrequired

    Merchant name.

  • country

    stringrequired

    Merchant ISO 3166 country code. Must match the “region” on the Account  API .

  • test

    booleanrequiredexperimental

    Flag indicating merchant is for testing.

  • settlementConfig

    objectexperimental
  • location

    locationexperimental

    Physical Location of Merchant. It is highly recommended that you provide this otherwise, users won’t be able to find you with our Merchant Search API if they perform a origin + distance query.

Errors

  • BANK_ACCOUNT_MISMATCH

    403

    The bank account in the settlement config does not belong to the same account.

  • ACCOUNT_REGION_MISMATCH

    403

    The merchant’s “country” does not match the “region” on the Account.

Request
POST/api/merchants
curl -X POST https://service.centrapay.com/api/merchants \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -124,10 +124,9 @@
     "name": "Centrapay Cafe Auckland",
     "country": "NZ",
     "test": false
-  }'
-  
Response
    {
+
Response
{
   "id": "5ee0c486308f590260d9a07f",
   "accountId": "C4QnjXvj8At6SMsEN4LRi9",
   "name": "Centrapay Cafe Auckland",
@@ -138,16 +137,14 @@
   "updatedAt": "2021-11-12T01:17:46.499Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
GET/api/merchants/{merchantId}

Get Merchant

This endpoint allows you to retrieve a Merchant by id.

Attributes

No attributes.

Request
GET/api/merchants/{merchantId}
    curl https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "5ee0c486308f590260d9a07f",
   "accountId": "yqwyya0rzz3vvshqw0474u89xtj5fn",
   "name": "Parisian - Brown",
@@ -158,16 +155,14 @@
   "updatedAt": "2021-11-12T01:17:46.499Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
GET/api/accounts/{accountId}/merchants

List Merchants for Account

This endpoint allows you to retrieve a paginated  API  list of Merchants attached to an Account.

Attributes

No attributes.

Request
GET/api/accounts/{accountId}/merchants
    curl https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/merchants \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "accountId": "Jaim1Cu1Q55uooxSens6yk",
@@ -194,12 +189,11 @@
       "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
     }
   ]
-}
-  

-
PUT/api/merchants/{merchantId}

Update Merchant

This endpoint allows you to update a Merchant.

Attributes

  • name

    string

    Merchant name.

  • settlementConfig

    objectexperimental
  • location

    locationexperimental

    Physical Location of Merchant. It is highly recommended that you provide this otherwise, users won’t be able to find you with our Merchant Search API if they perform a origin + distance query.

Errors

  • BANK_ACCOUNT_MISMATCH

    403

    The bank account in the settlement config does not belong to the same account.

Request
PUT/api/merchants/{merchantId}
    curl -X PUT https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f \
+
PUT/api/merchants/{merchantId}

Update Merchant

This endpoint allows you to update a Merchant.

Attributes

  • name

    string

    Merchant name.

  • settlementConfig

    objectexperimental
  • location

    locationexperimental

    Physical Location of Merchant. It is highly recommended that you provide this otherwise, users won’t be able to find you with our Merchant Search API if they perform a origin + distance query.

Errors

  • BANK_ACCOUNT_MISMATCH

    403

    The bank account in the settlement config does not belong to the same account.

Request
PUT/api/merchants/{merchantId}
curl -X PUT https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
@@ -214,10 +208,9 @@
     "settlementConfig": {
       "bankAccountId": "WRhAxxWpTKb5U7pXyxQjjY"
     }
-  }'
-  
Response
    {
+
Response
{
   "id": "5ee0c486308f590260d9a07f",
   "accountId": "yqwyya0rzz3vvshqw0474u89xtj5fn",
   "name": "Centrapay Café",
@@ -238,21 +231,19 @@
   "updatedAt": "2021-11-12T01:17:46.499Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
-}
-  

-
POST/api/merchants/{merchantId}/set-onboarding-status

Set Merchant Onboarding Status

This endpoint allows you to set the onboarding status of a Merchant.

Attributes

Request
POST/api/merchants/{merchantId}/set-onboarding-status
    curl -X POST https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/set-onboarding-status \
+
POST/api/merchants/{merchantId}/set-onboarding-status

Set Merchant Onboarding Status

This endpoint allows you to set the onboarding status of a Merchant.

Attributes

Request
POST/api/merchants/{merchantId}/set-onboarding-status
curl -X POST https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/set-onboarding-status \
   -H "X-Api-Key: $api_key" \
   -H "Content-Type: application/json" \
   -d '{
     "onboardingStatus": "deactivated",
     "onboardingStatusReason": "change-of-ownership"
-  }'
-  
Response
    {
+
Response
{
   "type": "set-onboarding-status",
   "onboardingStatus": "deactivated",
   "onboardingStatusReason": "change-of-ownership",
@@ -260,21 +251,19 @@
   "createdAt": "2021-09-12T01:11:22.491Z",
   "createdBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey",
   "activityNumber": "2"
-}
-  

-
GET/api/merchants/search

Search Merchants

Returns a paginated  API  response of Merchant Search Results that match the search query. This endpoint does not require Auth  API .

Query Parameters

  • origin

    string

    The point to be searched around, formatted as a latitude,longitude

  • distance

    number

    The distance from the origin to be searched around in km

  • asset

    string

    A string of the format assetType, productId describing the asset where assetType is the type of asset  API  to filter the merchants by and productId is the asset’s productCode for epay.nzd  API  asset types or the asset’s collectionId for centrapay.token  API  asset types.

  • name

    string

    Name of the merchant

  • pageKey

    string

    pageKey of next merchant to fetch

  • paginationLimit

    string

    Maximum amount of merchants to return

Request
GET/api/merchants/search
    curl -G https://service.centrapay.com/api/merchants/search \
+
GET/api/merchants/search

Search Merchants

Returns a paginated  API  response of Merchant Search Results that match the search query. This endpoint does not require Auth  API .

Query Parameters

  • origin

    string

    The point to be searched around, formatted as a latitude,longitude

  • distance

    number

    The distance from the origin to be searched around in km

  • asset

    string

    A string of the format assetType, productId describing the asset where assetType is the type of asset  API  to filter the merchants by and productId is the asset’s productCode for epay.nzd  API  asset types or the asset’s collectionId for centrapay.token  API  asset types.

  • name

    string

    Name of the merchant

  • pageKey

    string

    pageKey of next merchant to fetch

  • paginationLimit

    string

    Maximum amount of merchants to return

Request
GET/api/merchants/search
curl -G https://service.centrapay.com/api/merchants/search \
   -H "X-Api-Key: $api_key" \
   -d origin=123.42,32.22 \
   -d distance=100 \
   -d asset=epay.nzd.main,37873 \
   -d pageKey=10 \
-  -d paginationLimit=10
-  
Response
    {
+
Response
{
   "totalItems": 100,
   "items": [
     {
@@ -317,16 +306,14 @@
     }
   ],
   "nextPageKey": "20"
-}
-  

-
GET/api/merchants

List Merchants deprecated

Returns a paginated  API  list of Merchants which belong to the authenticated subject.

Attributes

No attributes.

Request
GET/api/merchants
    curl https://service.centrapay.com/api/merchants \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "items": [
     {
       "accountId": "3xsjxxwmnpkunjbcpekyekc84rzxr4",
@@ -365,7 +352,6 @@
       "updatedBy": "crn:WIj211vFs9cNACwBb04vQw:api-key:MyApiKey"
     }
   ]
-}
-  
\ No newline at end of file diff --git a/api/pagination/index.html b/api/pagination/index.html index 5d1f614be..6e8da6d5b 100644 --- a/api/pagination/index.html +++ b/api/pagination/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Pagination

Pagination allows a listing endpoint to return a subset of results. The goal is to reduce memory +

Pagination

Pagination allows a listing endpoint to return a subset of results. The goal is to reduce memory usage and speed up page rendering.

To retrieve the next page, a pageKey can be supplied. Typically this will be the nextPageKey returned from your previous query.

@@ -28,12 +28,11 @@

Pagination Model

  • items

    array

    A list of items from the current page.

  • nextPageKey

    string

    Can be used to fetch the next page, not present on the last page.


-

Example

  • pageKey

    string

    Used to retrieve the next page of items.

Request
GET/api/examples
    curl -G https://service.centrapay.com/api/examples \
+

Example

  • pageKey

    string

    Used to retrieve the next page of items.

Request
GET/api/examples
curl -G https://service.centrapay.com/api/examples \
   -H "X-Api-Key: $api_key" \
-  -d pageKey="Example#E9eXsErwA444qFDoZt5iLA|Activity#000000000000001|614161c4c4d3020073bd4ce8"
-  
Response
    {
+
Response
{
   "nextPageKey": "5ee0c486308f590260d9a07f|ded3f328-1123-11ec-bf1a-5ba46eb12a7d",
   "items": [
     {
@@ -49,7 +48,6 @@
       "assetType": "centrapay.nzd.main"
     }
   ]
-}
-  
\ No newline at end of file diff --git a/api/patron-codes/index.html b/api/patron-codes/index.html index 18186067a..ba4752c91 100644 --- a/api/patron-codes/index.html +++ b/api/patron-codes/index.html @@ -12,23 +12,22 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Patron Codes

A Patron Code is an alternative to presenting a QR code where that option isn’t available.

+

Patron Codes

A Patron Code is an alternative to presenting a QR code where that option isn’t available.

Patron Code Model

Attributes

  • id

    string

    The Patron Code’s unique identifier.

  • barcode

    string

    ✩ Field to display in barcode format.

  • createdAt

    timestamp

    Date when the Patron Code was created.

  • expiresAt

    timestamp

    Date when the Patron Code will expire.

  • appName

    stringdeprecated

    The app used to create the Patron Code.

  • accountId

    string

    The account id of the creator of the patron code.

  • testScenarioName

    string

    The Test Scenario Name of the Patron Code.

✩ Barcode is a 16 digit number. The first 6 digits are a Centrapay defined prefix, then a 9 digit code, then a luhn checksum digit.

-
Barcode Breakdown
    9 9 9 0 0 0 1 2 3 4 5 6 7 8 9 5  ❖  complete barcode
+
Barcode Breakdown
9 9 9 0 0 0 1 2 3 4 5 6 7 8 9 5  ❖  complete barcode
 9 9 9 0 0 0 - - - - - - - - - -  ❖  centrapay prefix
 - - - - - - 1 2 3 4 5 6 7 8 9 -  ❖  code
-- - - - - - - - - - - - - - - 5  ❖  luhn checksum
-  

The Centrapay Prefix may present any of the following prefixes:

@@ -71,50 +70,44 @@
NameDescription
force-condition-check-photo-idThe Payment Request will have a required Merchant Condition  API  to check photo id.

-
POST/api/patron-codes

Create Patron Code

This endpoint allows you to create a Patron Code. You can find payment request information attached to a Patron Code by polling for the Payment Request  API  using the transacting APIs.

Attributes

No attributes.

Request
POST/api/patron-codes
    curl -X POST https://service.centrapay.com/api/patron-codes \
-  -H "Authorization: $jwt"
-  
Response
    {
+
Response
{
   "id": "V17FByEP9gm1shSG6a1Zzx",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "barcode": "9990001234567895",
   "createdAt": "2021-06-08T22:55:00.000Z",
   "expiresAt": "2021-06-08T23:00:00.000Z",
   "appName": "centrapay"
-}
-  

-
GET/api/patron-codes/{patronCodeId}

Get Patron Code

This endpoint allows you to retrieve a Patron Code by id.

Attributes

No attributes.

Request
GET/api/patron-codes/{patronCodeId}
    curl https://service.centrapay.com/api/patron-codes/V17FByEP9gm1shSG6a1Zzx \
-  -H "Authorization: $jwt"
-  
Response
    {
+
Response
{
   "id": "V17FByEP9gm1shSG6a1Zzx",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "barcode": "9990001234567895",
   "createdAt": "2021-06-08T22:55:00.000Z",
   "expiresAt": "2021-06-08T23:00:00.000Z",
   "appName": "centrapay"
-}
-  

-
GET/api/patron-codes/barcode/{barcode}

Get Patron Code By Barcode

This endpoint allows you to retrieve a Patron Code by barcode.

Attributes

No attributes.

Errors

  • CHECKSUM_FAILED

    400

    Luhn checksum digit doesn’t pass.

  • PATRON_CODE_INVALID

    403

    Patron Code doesn’t exist or it has expired.

Request
GET/api/patron-codes/barcode/{barcode}
    curl https://service.centrapay.com/api/patron-codes/barcode/9990001234567895 \
-  -H "X-Api-Key: $api_key"
-  
Response
    {
+
Response
{
   "id": "V17FByEP9gm1shSG6a1Zzx",
   "accountId": "Jaim1Cu1Q55uooxSens6yk",
   "barcode": "9990001234567895",
   "createdAt": "2021-06-08T22:55:00.000Z",
   "expiresAt": "2021-06-08T23:00:00.000Z",
   "appName": "centrapay"
-}
-  
\ No newline at end of file diff --git a/api/payment-requests/index.html b/api/payment-requests/index.html index 9e271a26b..8f8eda099 100644 --- a/api/payment-requests/index.html +++ b/api/payment-requests/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

Payment Requests

Payment Requests represent the intention for a merchant to receive payment for goods and services. Payment Requests define the amount to be paid and the Asset Types that are acceptable for payment.

+

Payment Requests

Payment Requests represent the intention for a merchant to receive payment for goods and services. Payment Requests define the amount to be paid and the Asset Types that are acceptable for payment.

A Payment Request is shared with, and paid by, a patron. The Payment Flows Guide has more details regarding negotiation of Payment Requests.

Payment Requests have the following statuses:

    @@ -203,7 +203,7 @@
    ReasonDescription
    CANCELLED_BY_MERCHANTThe merchant cancelled the Payment Request by calling the cancel or void endpoint.
    CANCELLED_BY_PATRONThe patron cancelled the transaction.
    PATRON_CODE_INVALIDThe patron code on the Payment Request was invalid.
    PAYMENT_FAILEDThe Payment Request failed for an unknown reason.
    PATRON_CODE_EXPIREDThe patron code on the Payment Request has expired.
    DECLINED_BY_PATRONThe payment was declined by the patron during approval steps.
    DECLINED_BY_MERCHANTThe payment was declined by the merchant during approval steps.
    PAYMENT_DECLINEDThe payment parameters were valid but payment was declined because additional payment restrictions were violated. For example, asset not active, asset overdrawn, quota exceeded or line item category restrictions.
    PAYMENT_REQUEST_EXPIREDThe Payment Request has expired.
    NO_AVAILABLE_PAYMENT_OPTIONSNo payment options match the requested payment parameters.
    INACTIVE_ASSETThe asset used to pay the Payment Request is inactive.

    -
    POST/api/payment-requests

    Create a Payment Request

    This endpoint allows you to create a Payment Request.

    Attributes

    • configId

      stringrequired

      The Merchant Config  API  id used to configure the payment options.

    • value

      monetaryrequired

      The canonical value of the Payment Request. Must be less than 100000000 and positive.

    • barcode

      string

      Scanned Code  API  used to create the Payment Request. Required when preAuth is true.

    • barcodeType

      string

      Indicates the provider of a barcode, e.g. ticketek.

    • collectionId

      string

      The identifier of the Token Collection  API .

    • expirySeconds

      number

      The expiry seconds used to configure the Payment Request expiry.

    • lineItems

      arrayexperimental

      The Line Items being paid for.

    • purchaseOrderRef

      string

      A reference to a purchase order for this Payment Request.

    • invoiceRef

      string

      A reference to an invoice for this Payment Request. Must be less than or equal to 128 characters.

    • redirectUrl

      stringexperimental

      URL to redirect the user to after they pay or cancel the Payment Request. Must start with one of the allowedRedirectUrls for the Merchant Config  API .

    • externalRef

      string

      An external reference to the Payment Request.

    • terminalId

      string

      The software or logical id of the payment terminal.

    • deviceId

      string

      The hardware id or serial number of the payment terminal.

    • operatorId

      string

      POS operator Id.

    • createdByAccountName

      string

      Name of the Centrapay Account  API  creating the Payment Request.

    • conditionsEnabled

      boolean

      Flag to indicate that a merchant is able to accept Payment Conditions.

    • patronNotPresent

      boolean

      Flag to indicate the patron is not physically present. This may affect payment conditions or available Payment Options.

    • preAuth

      boolean

      Flag to indicate the if the request is a Pre Auth for supported Asset Types  API .

    • partialAllowed

      boolean

      Flag to indicate that the Payment Request can be paid for partially.

    • basketAmount

      bignumber

      The total amount of the transaction including non Centrapay payment methods. Required when partialAllowed is true.

    Errors

    • LINE_ITEMS_SUM_CHECK_FAILED

      400

      The sum value of the line items did not equal the value of the Payment Request.

    • CHECKSUM_FAILED

      400

      Luhn checksum digit doesn’t pass.

    • REDIRECT_URL_INVALID

      403

      The supplied redirectUrl does not start with one of the allowedRedirectUrls on the Merchant Config  API .

    • PATRON_CODE_INVALID

      403

      Patron Code  API  doesn’t exist or has expired.

    • NO_AVAILABLE_PAYMENT_OPTIONS

      403

      No payment options match the requested payment parameters.

    • TOKEN_COLLECTION_NOT_FOUND

      403

      The token collection does not exist.

    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    POST/api/payment-requests

    Create a Payment Request

    This endpoint allows you to create a Payment Request.

    Attributes

    • configId

      stringrequired

      The Merchant Config  API  id used to configure the payment options.

    • value

      monetaryrequired

      The canonical value of the Payment Request. Must be less than 100000000 and positive.

    • barcode

      string

      Scanned Code  API  used to create the Payment Request. Required when preAuth is true.

    • barcodeType

      string

      Indicates the provider of a barcode, e.g. ticketek.

    • collectionId

      string

      The identifier of the Token Collection  API .

    • expirySeconds

      number

      The expiry seconds used to configure the Payment Request expiry.

    • lineItems

      arrayexperimental

      The Line Items being paid for.

    • purchaseOrderRef

      string

      A reference to a purchase order for this Payment Request.

    • invoiceRef

      string

      A reference to an invoice for this Payment Request. Must be less than or equal to 128 characters.

    • redirectUrl

      stringexperimental

      URL to redirect the user to after they pay or cancel the Payment Request. Must start with one of the allowedRedirectUrls for the Merchant Config  API .

    • externalRef

      string

      An external reference to the Payment Request.

    • terminalId

      string

      The software or logical id of the payment terminal.

    • deviceId

      string

      The hardware id or serial number of the payment terminal.

    • operatorId

      string

      POS operator Id.

    • createdByAccountName

      string

      Name of the Centrapay Account  API  creating the Payment Request.

    • conditionsEnabled

      boolean

      Flag to indicate that a merchant is able to accept Payment Conditions.

    • patronNotPresent

      boolean

      Flag to indicate the patron is not physically present. This may affect payment conditions or available Payment Options.

    • preAuth

      boolean

      Flag to indicate the if the request is a Pre Auth for supported Asset Types  API .

    • partialAllowed

      boolean

      Flag to indicate that the Payment Request can be paid for partially.

    • basketAmount

      bignumber

      The total amount of the transaction including non Centrapay payment methods. Required when partialAllowed is true.

    Errors

    • LINE_ITEMS_SUM_CHECK_FAILED

      400

      The sum value of the line items did not equal the value of the Payment Request.

    • CHECKSUM_FAILED

      400

      Luhn checksum digit doesn’t pass.

    • REDIRECT_URL_INVALID

      403

      The supplied redirectUrl does not start with one of the allowedRedirectUrls on the Merchant Config  API .

    • PATRON_CODE_INVALID

      403

      Patron Code  API  doesn’t exist or has expired.

    • NO_AVAILABLE_PAYMENT_OPTIONS

      403

      No payment options match the requested payment parameters.

    • TOKEN_COLLECTION_NOT_FOUND

      403

      The token collection does not exist.

    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -213,10 +213,9 @@
           "amount": "1",
           "currency": "NZD"
         }
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "id": "VYowvZmuw3hbp1va9xqWx7",
       "shortCode": "CP-X4V-6N",
       "url": "https://app.centrapay.com/pay/VYowvZmuw3hbp1va9xqWx7",
    @@ -270,16 +269,14 @@
         "type": "nz-gst"
       },
       "remainingAmount": "1"
    -}
    -  

    -
    GET/api/payment-requests/{paymentRequestId}

    Get a Payment Request

    This endpoint allows you to retrieve a Payment Request.

    Attributes

    No attributes.

    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    Response
        {
    +
    Response
    {
       "id": "MhocUmpxxmgdHjr7DgKoKw",
       "shortCode": "CP-C7F-ZS5",
       "url": "https://app.centrapay.com/pay/MhocUmpxxmgdHjr7DgKoKw",
    @@ -349,16 +346,14 @@
       "expiresAt": "2021-06-08T04:06:27.426Z",
       "liveness": "test",
       "expirySeconds": 120
    -}
    -  

    -
    GET/api/payment-requests/short-code/{shortCode}

    Get a Payment Request by Short Code

    This endpoint returns the latest Payment Request that matches the given short code.

    Attributes

    No attributes.

    Errors

    • CHECKSUM_FAILED

      400

      Luhn checksum digit doesn’t pass.

    Request
    GET/api/payment-requests/short-code/{shortCode}
        curl https://service.centrapay.com/api/payment-requests/short-code/CP-C7F-ZS5 \
    -  -H "Authorization: $jwt"
    -  
    Response
        {
    +
    Response
    {
       "id": "MhocUmpxxmgdHjr7DgKoKw",
       "shortCode": "CP-C7F-ZS5",
       "url": "https://app.centrapay.com/pay/MhocUmpxxmgdHjr7DgKoKw",
    @@ -386,19 +381,17 @@
       "expiresAt": "2021-06-08T04:06:27.426Z",
       "liveness": "test",
       "expirySeconds": 120
    -}
    -  

    GET/api/me/patron-code-payment-request

    Get a Payment Request linked to a Patron Code

    This endpoint returns the latest Payment Request with status new that has been attached to a Patron Code  API . The Payment Request may have been created with a reference to any Patron Code owned by the user’s account.

    This endpoint should be polled just after a user’s Patron Code has been scanned. This will allow -them to find the Payment Request and proceed to pay.

    Attributes

    No attributes.

    Request
    GET/api/me/patron-code-payment-request
        curl https://service.centrapay.com/api/me/patron-code-payment-request \
    -  -H "Authorization: $jwt"
    -  
    Request
    GET/api/me/patron-code-payment-request
    curl https://service.centrapay.com/api/me/patron-code-payment-request \
    +  -H "Authorization: $jwt"
    Response
        {
    +
    Response
    {
       "id": "MhocUmpxxmgdHjr7DgKoKw",
       "shortCode": "CP-C7F-ZS5",
       "url": "https://app.centrapay.com/pay/MhocUmpxxmgdHjr7DgKoKw",
    @@ -426,8 +419,7 @@
       "expiresAt": "2021-06-08T04:06:27.426Z",
       "liveness": "test",
       "expirySeconds": 120
    -}
    -  

    @@ -435,7 +427,7 @@
  • Use assetId if the Asset Type  API  is managed by Centrapay.
  • Use transactionId to verify an external transaction such as a Bitcoin payment.
  • Use authorization to authorize an external transaction.
  • -

Attributes

  • assetType

    stringrequired

    An Asset Type  API  reference.

  • assetId

    string

    The id of the Asset being used to make payment.

  • transactionId

    string

    Used to verify an external transaction eg Bitcoin.

  • authorization

    string

    Used to authorize an external transaction.

  • mode

    string

    The mode of payment. Valid values: parital-payment.

  • amount

    string

    The value required to pay using the canonical units for the Asset Type.

Errors

  • INVALID_ASSET_TYPE

    403

    Either the merchant is not configured with the provided asset type or the asset type does not exist.

  • REQUEST_EXPIRED

    403

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    403

    Action cannot be completed because the request has been paid.

  • REQUEST_CANCELLED

    403

    Action cannot be completed because the request has already been cancelled.

  • INACTIVE_ASSET

    403

    The asset is not spendable. It may have been disabled, expired, or already spent.

  • INVALID_MERCHANT_CONFIG

    403

    The merchant is not configured properly to satisfy the Payment Request. This could be due to incorrect information, or the merchant’s credentials might be blocked by an external service.

  • QUOTA_EXCEEDED

    403

    The payment pay request exceeds the allowed spend quota supplied.

  • INSUFFICIENT_ASSET_VALUE

    403

    The asset has insufficient funds to pay the Payment Request or the transaction amount received by Centrapay is less than the total of the payment.

  • ASSET_REDEMPTION_DENIED

    403

    The asset redemption has been unsuccessful due to an error with provided payment parameters, the Merchant, or the Asset.

  • PAYMENT_DECLINED

    403

    The payment parameters were valid but payment was declined because additional payment restrictions were violated.

Request
POST/api/payment-requests/{paymentRequestId}/pay
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/pay \
+

Attributes

  • assetType

    stringrequired

    An Asset Type  API  reference.

  • assetId

    string

    The id of the Asset being used to make payment.

  • transactionId

    string

    Used to verify an external transaction eg Bitcoin.

  • authorization

    string

    Used to authorize an external transaction.

  • mode

    string

    The mode of payment. Valid values: parital-payment.

  • amount

    string

    The value required to pay using the canonical units for the Asset Type.

Errors

  • INVALID_ASSET_TYPE

    403

    Either the merchant is not configured with the provided asset type or the asset type does not exist.

  • REQUEST_EXPIRED

    403

    Action cannot be completed because the request has expired.

  • REQUEST_PAID

    403

    Action cannot be completed because the request has been paid.

  • REQUEST_CANCELLED

    403

    Action cannot be completed because the request has already been cancelled.

  • INACTIVE_ASSET

    403

    The asset is not spendable. It may have been disabled, expired, or already spent.

  • INVALID_MERCHANT_CONFIG

    403

    The merchant is not configured properly to satisfy the Payment Request. This could be due to incorrect information, or the merchant’s credentials might be blocked by an external service.

  • QUOTA_EXCEEDED

    403

    The payment pay request exceeds the allowed spend quota supplied.

  • INSUFFICIENT_ASSET_VALUE

    403

    The asset has insufficient funds to pay the Payment Request or the transaction amount received by Centrapay is less than the total of the payment.

  • ASSET_REDEMPTION_DENIED

    403

    The asset redemption has been unsuccessful due to an error with provided payment parameters, the Merchant, or the Asset.

  • PAYMENT_DECLINED

    403

    The payment parameters were valid but payment was declined because additional payment restrictions were violated.

Request
POST/api/payment-requests/{paymentRequestId}/pay
curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/pay \
   -H "Authorization: $jwt" \
   -H "Content-Type: application/json" \
   -d '{
@@ -443,10 +435,9 @@
     "assetId": "WRhAxxWpTKb5U7pXyxQjjY",
     "amount": "200",
     "mode": "partial-payment"
-  }'
-  
Response
    {
+
Response
{
   "type": "payment",
   "value": {
     "currency": "NZD",
@@ -464,15 +455,14 @@
   "paymentRequestCreatedBy": "crn::user:0af834c8-1110-11ec-9072-3e22fb52e878",
   "activityNumber": "2",
   "mode": "partial-payment"
-}
-  

POST/api/payment-requests/{paymentRequestId}/refund

Refund a Payment Request

This endpoint allows you to refund a Payment Request.

Attributes

  • value

    monetaryrequired

    The canonical value of the Payment Request. Must be less than 100000000 and positive.

  • externalRef

    stringrequired

    An external reference to the refund.

  • invoiceRef

    string

    A reference to an invoice for the refund. Must be less than or equal to 128 characters.

  • confirmationIdempotencyKey

    string

    Required when refunding a Pre Auth Confirmation. Should be the same as the idempotencyKey used for Confirmation.

  • lineItems

    arrayexperimental

    The Line Items being refunded.

  • merchantConfigId

    string

    The Merchant Config  API  id of the refunding merchant when refunding a farmlands.nzd.* payment.

Errors

  • LINE_ITEMS_SUM_CHECK_FAILED

    400

    The sum value of the line items did not equal the value of the refund.

  • NOT_PAID

    403

    The Payment Request has not been paid.

  • ALREADY_REFUNDED

    403

    The Payment Request already been refunded. If you want to perfom additional refunds then an externalRef is required.

  • INVALID_AMOUNT

    403

    The refund requested is greater than the refundable amount.

  • REPEAT_REFERENCE

    403

    A refund has already been requested with the same external reference. Refunding the payment request twice with the same external reference is not allowed. -If the amount of the refund is the same we assume it is a repeat request and return 200.

  • PARTIAL_REFUNDS_NOT_ALLOWED

    403

    The Asset does not support partial refunds.

  • INACTIVE_ASSET

    403

    The Asset is not refundable. It may have been disabled, expired, or already refunded.

  • REFUND_NOT_SUPPORTED

    403

    The Asset type does not support refunds.

  • REFUND_WINDOW_EXCEEDED

    403

    The time since the payment exceeds the window of time a payment request can be refunded in.

  • PRE_AUTH_PENDING

    403

    The Pre Auth Payment Request has yet to be authorized.

  • CONFIRMATION_NOT_FOUND

    403

    The confirmationIdempotencyKey does not match a Confirmation on the Payment Request.

Request
POST/api/payment-requests/{paymentRequestId}/refund
    curl -X POST https://service.centrapay.com/api/payment-requests/{paymentRequestId}/refund \
+If the amount of the refund is the same we assume it is a repeat request and return 200.

  • PARTIAL_REFUNDS_NOT_ALLOWED

    403

    The Asset does not support partial refunds.

  • INACTIVE_ASSET

    403

    The Asset is not refundable. It may have been disabled, expired, or already refunded.

  • REFUND_NOT_SUPPORTED

    403

    The Asset type does not support refunds.

  • REFUND_WINDOW_EXCEEDED

    403

    The time since the payment exceeds the window of time a payment request can be refunded in.

  • PRE_AUTH_PENDING

    403

    The Pre Auth Payment Request has yet to be authorized.

  • CONFIRMATION_NOT_FOUND

    403

    The confirmationIdempotencyKey does not match a Confirmation on the Payment Request.

  • Request
    POST/api/payment-requests/{paymentRequestId}/refund
    curl -X POST https://service.centrapay.com/api/payment-requests/{paymentRequestId}/refund \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -481,10 +471,9 @@
           "currency": "NZD"
         },
         "externalRef": "e8df06e2-13a5-48b4-b670-3fd6d815fe0a"
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "type": "refund",
       "value": {
         "currency": "NZD",
    @@ -502,18 +491,16 @@
       "paymentRequestCreatedBy": "crn::user:0af834c8-1110-11ec-9072-3e22fb52e878",
       "activityNumber": "3",
       "invoiceRef": "sy8CRmo3sp3ArOpnfmb423"
    -}
    -  

    POST/api/payment-requests/{paymentRequestId}/void

    Void a Payment Request

    Voiding a payment request will cancel the request and trigger any refunds if necessary.

    Attributes

    No attributes.

    Errors

    • VOID_WINDOW_EXCEEDED

      403

      The void window is closed 24 hours after the Payment Request createdAt. After the void window has closed if the Payment Request is paid, use Refund endpoint to reverse the payment.

    • ALREADY_REFUNDED

      403

      The Payment Request already been refunded.

    • REPEAT_REFERENCE

      403

      A refund has already been requested with the same external reference. Refunding the payment request twice with the same external reference is not allowed. -If the amount of the refund is the same we assume it is a repeat request and return 200.

    • INACTIVE_ASSET

      403

      The Asset is not refundable. It may have been disabled, expired, or already refunded.

    • REFUND_NOT_SUPPORTED

      403

      The Asset type does not support refunds.

    • REQUEST_EXPIRED

      403

      The Payment Request has expired.

    • PRE_AUTH_ALREADY_CONFIRMED

      403

      The Pre Auth Payment Request already has confirmations. Use Refund endpoint to reverse the transaction.

    Request
    POST/api/payment-requests/{paymentRequestId}/void
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/void \
    -  -H "X-Api-Key: $api_key"
    -  
    Request
    POST/api/payment-requests/{paymentRequestId}/void
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/void \
    +  -H "X-Api-Key: $api_key"
    Response
        {
    +
    Response
    {
       "type": "refund",
       "value": {
         "currency": "NZD",
    @@ -530,17 +517,15 @@
       "createdBy": "crn::user:0af834c8-1110-11ec-9072-3e22fb52e878",
       "paymentRequestCreatedBy": "crn::user:0af834c8-1110-11ec-9072-3e22fb52e878",
       "activityNumber": "3"
    -}
    -  

    POST/api/payment-requests/{paymentRequestId}/release

    Release Pre Auth funds

    This endpoint allows you to release funds held for a Pre Auth Payment Request.

    When you call release on a Pre Auth Payment Request any remaining funds that were being held for the authorization are returned to the asset, and a release Payment Activity is returned. -If the authorization never completed, the Payment Request will instead be cancelled, and a cancellation Payment Activity will be returned.

    Attributes

    No attributes.

    Errors

    • INVALID_PAYMENT_REQUEST_TYPE

      403

      The Payment Request is not related to a Pre Auth.

    • PRE_AUTH_RELEASED

      403

      preAuthExpiresAt has passed.

    Request
    POST/api/payment-requests/{paymentRequestId}/release
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/release \
    -  -H "X-Api-Key: $api_key"
    -  
    Request
    POST/api/payment-requests/{paymentRequestId}/release
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/release \
    +  -H "X-Api-Key: $api_key"
    Response
        {
    +
    Response
    {
       "type": "release",
       "value": {
         "currency": "NZD",
    @@ -558,14 +543,13 @@
       "createdBy": "crn::user:0af834c8-1110-11ec-9072-3e22fb52e878",
       "paymentRequestCreatedBy": "crn::user:0af834c8-1110-11ec-9072-3e22fb52e878",
       "activityNumber": "3"
    -}
    -  

    POST/api/payment-requests/{paymentRequestId}/confirm

    Confirm Pre Auth Payment Request

    This endpoint allows you to make a confirmation against a Pre Auth Payment Request.

    An idempotencyKey is a identifier from your system used for guaranteeing at least once delivery of your request. If our endpoint does not respond, you must retry until you get back a 200 or 403. -If we recive 2 requests with the same idempotencyKey, we won’t process the second and return the first response.

    Attributes

    • idempotencyKey

      stringrequired

      This is an identifier from your system to enforce uniqueness.

    • invoiceRef

      stringrequired

      A reference to an invoice for this Payment Request. Must be less than or equal to 128 characters.

    • lineItems

      arrayrequiredexperimental

      The Line Items being confirmed.

    • The canonical value of the confirmation. Must be less than 100000000 and positive.

    Errors

    • INVALID_PAYMENT_REQUEST_TYPE

      403

      The Payment Request is not related to a Pre Auth.

    • PRE_AUTH_RELEASED

      403

      The Payment Request has been released or Pre Auth has expired. Remaining funds have been returned to the Patron.

    • PRE_AUTH_PENDING

      403

      The Payment Request has not been authorized.

    • REQUEST_CANCELLED

      403

      The Payment Request has been cancelled.

    • INVALID_AMOUNT

      403

      The confirmation is greater then the remaining funds on the authroization.

    • IDEMPOTENT_OPERATION_FAILED

      403

      There has already been a confirmation against the Payment Request with the same idempotencyKey but different content.

    Request
    POST/api/payment-requests/{paymentRequestId}/confirm
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/confirm \
    +If we recive 2 requests with the same idempotencyKey, we won’t process the second and return the first response.

    Attributes

    • idempotencyKey

      stringrequired

      This is an identifier from your system to enforce uniqueness.

    • invoiceRef

      stringrequired

      A reference to an invoice for this Payment Request. Must be less than or equal to 128 characters.

    • lineItems

      arrayrequiredexperimental

      The Line Items being confirmed.

    • The canonical value of the confirmation. Must be less than 100000000 and positive.

    Errors

    • INVALID_PAYMENT_REQUEST_TYPE

      403

      The Payment Request is not related to a Pre Auth.

    • PRE_AUTH_RELEASED

      403

      The Payment Request has been released or Pre Auth has expired. Remaining funds have been returned to the Patron.

    • PRE_AUTH_PENDING

      403

      The Payment Request has not been authorized.

    • REQUEST_CANCELLED

      403

      The Payment Request has been cancelled.

    • INVALID_AMOUNT

      403

      The confirmation is greater then the remaining funds on the authroization.

    • IDEMPOTENT_OPERATION_FAILED

      403

      There has already been a confirmation against the Payment Request with the same idempotencyKey but different content.

    Request
    POST/api/payment-requests/{paymentRequestId}/confirm
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/confirm \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -602,10 +586,9 @@
             }
           }
         ]
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "paymentRequestId": "MhocUmpxxmgdHjr7DgKoKw",
       "shortCode": "CP-C7F-ZS5",
       "value": {
    @@ -637,20 +620,18 @@
       "invoiceRef": "2022-08-03T16:56:50-06:00",
       "createdByAccountId": "Jaim1Cu1Q55uooxSens6yk",
       "createdByAccountName": "Bob's Burgers Intergration"
    -}
    -  

    GET/api/payment-activities

    List Payment Activities for a Merchant

    This endpoint allows you to list Payment Activities for a Merchant. Results are paginated  API  and ordered by descending activity created date.

    Attributes

    • merchantId

      stringrequired

      The id of the Merchant  API  the Payment Request is on behalf of.

    • pageKey

      stringrequired

      Used to retrieve the next page of items. -Note: The pageKey value, if provided, needs to be URL-encoded.

    Request
    GET/api/payment-activities
        curl -G https://service.centrapay.com/api/payment-activities \
    +Note: The pageKey value, if provided, needs to be URL-encoded.

    Request
    GET/api/payment-activities
    curl -G https://service.centrapay.com/api/payment-activities \
       -H "X-Api-Key: $api_key" \
       -d merchantId=5ee0c486308f590260d9a07f \
    -  -d pageKey=PaymentRequest#E9eXsErwA444qFDoZt5iLA|Activity#000000000000001|614161c4c4d3020073bd4ce8|2021-09-15T03:00:21.156Z
    -  
    Response
        {
    +
    Response
    {
       "nextPageKey": "PaymentRequest#E9eXsErwA444qFDoZt5iLA|Activity#000000000000001|614161c4c4d3020073bd4ce8|2021-09-15T03:00:21.156Z",
       "items": [
         {
    @@ -743,17 +724,15 @@
           "preAuth": true
         }
       ]
    -}
    -  

    GET/api/payment-requests/{paymentRequestId}/activities

    List Payment Activities for a Payment Request

    This endpoint allows you to list Payment Activities for a Payment Request. -Results are ordered by descending activity created date.

    Attributes

    No attributes.

    Request
    GET/api/payment-requests/{paymentRequestId}/activities
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/activities \
    -  -H "Authorization: $jwt"
    -  
    Request
    GET/api/payment-requests/{paymentRequestId}/activities
    curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/activities \
    +  -H "Authorization: $jwt"
    Response
        {
    +
    Response
    {
       "items": [
         {
           "type": "refund",
    @@ -809,17 +788,15 @@
           "activityNumber": "1"
         }
       ]
    -}
    -  

    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/accept

    Accept a Payment Condition

    Accept a Payment Condition listed in merchantConditions with status awaiting-merchant. -Returns a Payment Activity.

    Attributes

    No attributes.

    Errors

    • PATRON_NOT_AUTHORIZED

      403

      The Payment Condition is awaiting-merchant, therefore the patron is not authorized to accept the condition.

    • MERCHANT_NOT_AUTHORIZED

      403

      The Payment Condition is awaiting-patron, therefore the merchant is not authorized to accept the condition.

    • CONDITION_ALREADY_SET

      403

      The Payment Condition has already been accepted or declined.

    Request
    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/accept
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/conditions/1/accept \
    -  -H "X-Api-Key: $api_key"
    -  
    Request
    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/accept
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/conditions/1/accept \
    +  -H "X-Api-Key: $api_key"
    Response
        {
    +
    Response
    {
       "type": "accept-condition",
       "value": {
         "currency": "NZD",
    @@ -835,17 +812,15 @@
       "merchantId": "5ee0c486308f590260d9a07f",
       "merchantConfigId": "5ee168e8597be5002af7b454",
       "merchantName": "Centrapay Café"
    -}
    -  

    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/decline

    Decline a Payment Condition

    Decline a Payment Condition listed in merchantConditions with status awaiting-merchant. -Returns a Payment Activity.

    Attributes

    No attributes.

    Errors

    • PATRON_NOT_AUTHORIZED

      403

      The Payment Condition is awaiting-merchant, therefore the patron is not authorized to decline the condition.

    • MERCHANT_NOT_AUTHORIZED

      403

      The Payment Condition is awaiting-patron, therefore the merchant is not authorized to decline the condition.

    • CONDITION_ALREADY_SET

      403

      The Payment Condition has already been accepted or declined.

    Request
    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/decline
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/conditions/1/decline \
    -  -H "X-Api-Key: $api_key"
    -  
    Request
    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/decline
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/conditions/1/decline \
    +  -H "X-Api-Key: $api_key"
    Response
        {
    +
    Response
    {
       "type": "decline-condition",
       "value": {
         "currency": "NZD",
    @@ -861,7 +836,6 @@
       "merchantId": "5ee0c486308f590260d9a07f",
       "merchantConfigId": "5ee168e8597be5002af7b454",
       "merchantName": "Centrapay Café"
    -}
    -  
    \ No newline at end of file diff --git a/api/profiles/index.html b/api/profiles/index.html index ddcfd0922..d8b9dbca7 100644 --- a/api/profiles/index.html +++ b/api/profiles/index.html @@ -12,18 +12,18 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    Profiles

    A profile represents a Centrapay user’s attributes.

    +

    Profiles

    A profile represents a Centrapay user’s attributes.

    Profile Model

    Attributes

    • userId

      string

      The Centrapay user id.

    • givenName

      string

      First name.

    • familyName

      string

      Last name.

    • featureUpdates

      boolean

      Whether a user would like to receive emails for feature updates.

    • marketingUpdates

      boolean

      Whether a user would like to receive emails for marketing updates.

    • email

      string

      Email address.

    • emailVerified

      boolean

      Flag indicating the verification status of the email address.

    • phoneNumber

      string

      The user’s phone number.

    • phoneVerified

      boolean

      Flag indicating the verification status of the phone number.


    -
    POST/api/me/profile/update

    Update Profile experimental

    Update a user’s mutable attributes. At least one field must be provided in the request.

    Attributes

    • givenName

      string

      First name.

    • familyName

      string

      Last name.

    • featureUpdates

      boolean

      Whether a user would like to receive emails for feature updates.

    • marketingUpdates

      boolean

      Whether a user would like to receive emails for marketing updates.

    • email

      string

      Email address.

    Request
    POST/api/me/profile/update
        curl -X POST https://service.centrapay.com/api/me/profile/update \
    +
    POST/api/me/profile/update

    Update Profile experimental

    Update a user’s mutable attributes. At least one field must be provided in the request.

    Attributes

    • givenName

      string

      First name.

    • familyName

      string

      Last name.

    • featureUpdates

      boolean

      Whether a user would like to receive emails for feature updates.

    • marketingUpdates

      boolean

      Whether a user would like to receive emails for marketing updates.

    • email

      string

      Email address.

    Request
    POST/api/me/profile/update
    curl -X POST https://service.centrapay.com/api/me/profile/update \
       -H "Authorization: $jwt" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -32,25 +32,22 @@
         "featureUpdates": false,
         "marketingUpdates": true,
         "email": "john.doe@centrapay.com"
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "givenName": "John",
       "familyName": "Doe",
       "featureUpdates": false,
       "marketingUpdates": true,
       "email": "john.doe@centrapay.com"
    -}
    -  

    -
    GET/api/users/{userId}/profile

    Get Profile experimental

    This endpoint allows you to retrieve a user’s Profile.

    Attributes

    No attributes.

    Request
    GET/api/users/{userId}/profile
        curl https://service.centrapay.com/api/users/da75ad90-9a5b-4df0-8374-f48b3a8fbfcc/profile \
    -  -H "X-Api-Key: $api_key"
    -  
    Response
        {
    +
    Response
    {
       "userId": "9f4b3bae-dc30-11ea-ab70-2743d9be3dd5",
       "givenName": "John",
       "familyName": "Doe",
    @@ -60,7 +57,6 @@
       "emailVerified": true,
       "phoneNumber": "+64271112222",
       "phoneVerified": true
    -}
    -  
    \ No newline at end of file diff --git a/api/quotas/index.html b/api/quotas/index.html index 5127cd87f..d486cdc7c 100644 --- a/api/quotas/index.html +++ b/api/quotas/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    Quotas

    Centrapay account quotas are enforced on usage types such as spending or topping up, and may apply to a time period (daily, monthly, yearly). Account quotas may be affected by the verification status of the Centrapay account.

    +

    Quotas

    Centrapay account quotas are enforced on usage types such as spending or topping up, and may apply to a time period (daily, monthly, yearly). Account quotas may be affected by the verification status of the Centrapay account.

    Quota Model

    Attributes

    • type

      string

      The quota’s type. See Supported Quota Types.

    • The quota’s upper usage limit.

    • The quota’s current usage.

    • assetType

      string

      The type of asset the quota is scoped to, eg centrapay.nzd.main.

    • period

      string

      The recurring, time-bound quota’s duration: daily, monthly or yearly.

    • interval

      string

      The specific day, month or year the quota applies to, eg: 2020-01-01, 2020-01, 2020.

    @@ -48,11 +48,10 @@
    TypeDescriptionScopedPeriods
    spendValue of wallet-based payments or asset transfers from the account.Yesmonthly yearly
    topupValue of topups from bank accounts linked to the account.Yesmonthly yearly

    -
    GET/api/accounts/{accountId}/quotas

    Get Account Quotas experimental

    Retrieve quota limits and usages for the current intervals. Ie, all quotas for the current day, current month and current year as well as any quotas that are not associated with a temporal period.

    Attributes

    No attributes.

    Errors

    If a quota limit is exceeded by an action that enforces quota limits, an error response will be returned. The quotas field will contain all quota limits that are exceeded with the usage set to the amount that the quota would have been updated to if the action was completed.

    Request
    GET/api/accounts/{accountId}/quotas
        curl https://service.centrapay.com/api/accounts/Jaim1Cu1Q55uooxSens6yk/quotas \
    -  -H "X-Api-Key: $api_key"
    -  
    Response
        [
    +
    Response
    [
       {
         "limit": "1000",
         "interval": "2021-03",
    @@ -85,10 +84,9 @@
         "type": "topup",
         "assetType": "centrapay.nzd.main"
       }
    -]
    -  
    Error Response
        {
    +
    Error Response
    {
       "message": "QUOTA_EXCEEDED",
       "quotas": [
         {
    @@ -100,7 +98,6 @@
           "assetType": "centrapay.nzd.main"
         }
       ]
    -}
    -  
    \ No newline at end of file diff --git a/api/scanned-codes/index.html b/api/scanned-codes/index.html index 9518e5d78..bc6f97605 100644 --- a/api/scanned-codes/index.html +++ b/api/scanned-codes/index.html @@ -12,34 +12,32 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    Scanned Codes

    A scanned code is a barcode that a merchant scans. The code can be used to create a Payment Request  API .

    +

    Scanned Codes

    A scanned code is a barcode that a merchant scans. The code can be used to create a Payment Request  API .

    Scanned Code Model

    Attributes

    • code

      string

      The utf8 representation of data decoded from what was scanned.

    • scannedBy

      string

      The party that scanned the code. Can be merchant.

    • provider

      string

      The integrator that owns the code. This can be used to calculate discounts on Line Items  API . Can be paypal, venmo, farmlands or centrapay.

    • displayName

      string

      A formatted name that can be displayed in a client.

    • merchantConfigId

      string

    -
    POST/api/decode

    Decode Scanned Code

    This endpoint allows you to decode a scanned code.

    Attributes

    • code

      stringrequired

      The utf8 representation of data decoded from what was scanned.

    • scannedBy

      stringrequired

      The party that scanned the code. Can be merchant.

    • merchantConfigId

      stringrequired

    Errors

    • UNKNOWN_CODE

      403

      The code doesn’t exist or is no longer active in our system.

    • MERCHANT_CONFIG_NOT_FOUND

      403

      The supplied merchant config does not exist.

    • INVALID_MERCHANT_CONFIG

      403

      The merchant config does not have a payment option that can satisfy the scanned code.

    Request
    POST/api/decode
        curl -X POST https://service.centrapay.com/api/decode \
    +
    POST/api/decode

    Decode Scanned Code

    This endpoint allows you to decode a scanned code.

    Attributes

    • code

      stringrequired

      The utf8 representation of data decoded from what was scanned.

    • scannedBy

      stringrequired

      The party that scanned the code. Can be merchant.

    • merchantConfigId

      stringrequired

    Errors

    • UNKNOWN_CODE

      403

      The code doesn’t exist or is no longer active in our system.

    • MERCHANT_CONFIG_NOT_FOUND

      403

      The supplied merchant config does not exist.

    • INVALID_MERCHANT_CONFIG

      403

      The merchant config does not have a payment option that can satisfy the scanned code.

    Request
    POST/api/decode
    curl -X POST https://service.centrapay.com/api/decode \
       -H "Authorization: $jwt" \
       -H "Content-Type: application/json" \
       -d '{
         "code": "123456789",
         "scannedBy": "merchant",
         "merchantConfigId": "P9gm1s1Cu1Q5uooxs"
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "code": "123456789",
       "scannedBy": "merchant",
       "merchantConfigId": "P9gm1s1Cu1Q5uooxs",
       "provider": "farmlands",
       "displayName": "Farmlands Card"
    -}
    -  
    \ No newline at end of file diff --git a/api/settlements/index.html b/api/settlements/index.html index b17211d61..6649332ee 100644 --- a/api/settlements/index.html +++ b/api/settlements/index.html @@ -12,24 +12,23 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    Settlements

    A Settlement is created from completed Payment Requests  API  over a specified period for each supported Asset Type  API  for each Merchant  API .

    +

    Settlements

    A Settlement is created from completed Payment Requests  API  over a specified period for each supported Asset Type  API  for each Merchant  API .

    Settlements can only be created if the Merchant has a Settlement Config  API .


    Settlement Model

    Attributes

    • id

      string

      The unique identifier for the Settlement.

    • status

      string

      The status of the Settlement.

    • assetType

      string

      The Asset Type  API  being settled.

    • currency

      string

      The settlement currency.

    • createdAt

      timestamp

      When the Settlement was created.

    • createdBy

      crn

      The User or API Key that created the Settlement.

    • settledAt

      timestamp

      The time when settlement was completed.

    • settledBy

      crn

      The User or API Key that completed the Settlement.

    • settlementAmount

      bignumber

      The total amount of the settlement.

    • settlementBankAccountId

      string

      The ID of the Bank Account  API  used for settlement.


    -
    GET/api/merchants/{merchantId}/settlements

    List Settlements

    This endpoint allows you to list Settlements.

    Attributes

    No attributes.

    Request
    GET/api/merchants/{merchantId}/settlements
        curl https://service.centrapay.com/api/merchants/5ee0c486308f590260d9a07f/settlements \
    -  -H "X-Api-Key: $api_key"
    -  
    Response
        {
    +
    Response
    {
       "items": [
         {
           "id": "89028sh9308f590260d9a07f",
    @@ -54,7 +53,6 @@
           "settlementBankAccountId": "67e0c486308f590260d9a139"
         }
       ]
    -}
    -  
    \ No newline at end of file diff --git a/api/tokens/index.html b/api/tokens/index.html index d39d1233b..09ef65389 100644 --- a/api/tokens/index.html +++ b/api/tokens/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    Tokens

    Tokens are Assets  API  which can only be spent in full.

    +

    Tokens

    Tokens are Assets  API  which can only be spent in full.

    Every Token is associated with a Collection, which defines the branding and general rules for the Tokens, such as active duration.

    A Redemption Condition is created for each Merchant  API  that accepts Tokens from a Collection, and contains additional conditions specific to that Merchant, such as redeemable product identifiers.


    @@ -42,7 +42,7 @@

    Attributes

    • collectionId

      string

      The Token Collection that will govern the branding and redemption rules for the token.

    • idempotencyKey

      string

      Client-supplied identifier that prevents double creation.

    • externalId

      string

      The asset identifier from the issuing system.

    • accountId

      string

      The Account to create the token for. Defaults to the Account on the Token Collection.


    -
    POST/api/collections

    Create Token Collection experimental

    This endpoint allows you to create a Token Collection.

    Attributes

    • name

      stringrequired

      The display name of the Collection.

    • accountId

      stringrequired

      The Account  API  that will own the Collection.

    • tokenExpiresAfter

      objectrequired

      The active duration of all Tokens created from this Collection. See Token Expires After Model.

    • type

      stringrequired

      The type of value exchanged when redeeming Tokens. Valid values: “product”.

    • maxValue

      monetary

      The maximum agreed value that any merchants will be settled for a Token redemption.

    • mediaUploadId

      string

      The id of the Media Upload  API  image of the Collection.

    Request
    POST/api/collections
        curl -X POST https://service.centrapay.com/api/collections \
    +
    POST/api/collections

    Create Token Collection experimental

    This endpoint allows you to create a Token Collection.

    Attributes

    • name

      stringrequired

      The display name of the Collection.

    • accountId

      stringrequired

      The Account  API  that will own the Collection.

    • tokenExpiresAfter

      objectrequired

      The active duration of all Tokens created from this Collection. See Token Expires After Model.

    • type

      stringrequired

      The type of value exchanged when redeeming Tokens. Valid values: “product”.

    • maxValue

      monetary

      The maximum agreed value that any merchants will be settled for a Token redemption.

    • mediaUploadId

      string

      The id of the Media Upload  API  image of the Collection.

    Request
    POST/api/collections
    curl -X POST https://service.centrapay.com/api/collections \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -58,10 +58,9 @@
         },
         "type": "product",
         "mediaUploadId": "12345"
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "id": "Xv990BzkgfoDS7bBls50pd",
       "name": "Bread",
       "accountId": "T3y6hogYA4d612BExypWYH",
    @@ -81,17 +80,15 @@
       "mediaUploadId": "12345",
       "img": "https://media-upload.centrapay.com/image.png?jhbdsfau67ewejshb=487hsdjhbdgs743",
       "issuer": "Centrapay"
    -}
    -  

    -
    GET/api/accounts/{accountId}/collections

    List Token Collections experimental

    Returns a paginated  API  list of Token Collections for an Account.

    Attributes

    • pageKey

      string

      Used to retrieve the next page of items.

    Request
    GET/api/accounts/{accountId}/collections
        curl -G https://service.centrapay.com/api/accounts/T3y6hogYA4d612BExypWYH/collections \
    +
    GET/api/accounts/{accountId}/collections

    List Token Collections experimental

    Returns a paginated  API  list of Token Collections for an Account.

    Attributes

    • pageKey

      string

      Used to retrieve the next page of items.

    Request
    GET/api/accounts/{accountId}/collections
    curl -G https://service.centrapay.com/api/accounts/T3y6hogYA4d612BExypWYH/collections \
       -H "X-Api-Key: $api_key" \
    -  -d pageKey=Collection#2G5bXm4dnuDHnnKY8WeCPm|#Collection|8vq4kn03o0g1grrihk7ooloizpqt2y
    -  
    Response
        {
    +
    Response
    {
       "nextPageKey": "Collection#E9eXsErwA444qFDoZt5iLA|#Collection",
       "items": [
         {
    @@ -116,12 +113,11 @@
           "issuer": "Centrapay"
         }
       ]
    -}
    -  

    -
    POST/api/collections/{collectionId}/redemption-conditions

    Create Redemption Condition experimental

    This endpoint allows you to create a Redemption Condition.

    Attributes

    • merchantId

      string

      The identifier of the Merchant  API  that is accepting the collection.

    • allowedProducts

      object

      List of Allowed Products. Required for collections of type product.

    Errors

    • INVALID_AMOUNT

      403

      One or more of the maxValue amount in the products has exceeded the maxValue amount defined on the collection.

    • REDEMPTION_CONDITION_ALREADY_EXISTS

      403

      A redemption condition for the collection and the merchant has already been created.

    Request
    POST/api/collections/{collectionId}/redemption-conditions
        curl -X POST https://service.centrapay.com/api/collections/NFhUgPQEYbk2EbTXAYArTX/redemption-conditions \
    +
    POST/api/collections/{collectionId}/redemption-conditions

    Create Redemption Condition experimental

    This endpoint allows you to create a Redemption Condition.

    Attributes

    • merchantId

      string

      The identifier of the Merchant  API  that is accepting the collection.

    • allowedProducts

      object

      List of Allowed Products. Required for collections of type product.

    Errors

    • INVALID_AMOUNT

      403

      One or more of the maxValue amount in the products has exceeded the maxValue amount defined on the collection.

    • REDEMPTION_CONDITION_ALREADY_EXISTS

      403

      A redemption condition for the collection and the merchant has already been created.

    Request
    POST/api/collections/{collectionId}/redemption-conditions
    curl -X POST https://service.centrapay.com/api/collections/NFhUgPQEYbk2EbTXAYArTX/redemption-conditions \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -144,10 +140,9 @@
             }
           }
         ]
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "id": "1234",
       "merchantId": "36EALpZ89XpShxM2Ee9sXT",
       "collectionId": "NFhUgPQEYbk2EbTXAYArTX",
    @@ -171,22 +166,20 @@
       ],
       "createdAt": "2022-05-12T04:30:11.001Z",
       "createdBy": "crn::user:b657195e-dc2f-11ea-8566-e7710d592c99"
    -}
    -  

    -
    POST/api/tokens

    Create Token experimental

    This endpoint allows you to create a Token.

    Attributes

    • collectionId

      stringrequired

      The Token Collection that will govern the branding and redemption rules for the token.

    • idempotencyKey

      stringrequired

      Client-supplied identifier that prevents double creation.

    • externalId

      string

      The asset identifier from the issuing system.

    • accountId

      string

      The Account to create the token for. Defaults to the Account on the Token Collection.

    Errors

    • TOKEN_ALREADY_CREATED

      403

      Token with supplied parameters already exists.

    • LIVENESS_MISMATCH

      403

      The account is test and the collection’s liveness is main or vice versa.

    Request
    POST/api/tokens
        curl -X POST https://service.centrapay.com/api/tokens \
    +
    POST/api/tokens

    Create Token experimental

    This endpoint allows you to create a Token.

    Attributes

    • collectionId

      stringrequired

      The Token Collection that will govern the branding and redemption rules for the token.

    • idempotencyKey

      stringrequired

      Client-supplied identifier that prevents double creation.

    • externalId

      string

      The asset identifier from the issuing system.

    • accountId

      string

      The Account to create the token for. Defaults to the Account on the Token Collection.

    Errors

    • TOKEN_ALREADY_CREATED

      403

      Token with supplied parameters already exists.

    • LIVENESS_MISMATCH

      403

      The account is test and the collection’s liveness is main or vice versa.

    Request
    POST/api/tokens
    curl -X POST https://service.centrapay.com/api/tokens \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "collectionId": "Jaim1Cu1Q55uooxSens6yk",
         "idempotencyKey": "payment-de32dd90-b46c-11ea-93c3-83a333b86e7b",
         "externalId": "23403283262"
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "id": "pe32dd90-b46c-11ea-92828sa",
       "accountId": "WRhAxxWpTKb5U7pXyxQjjP",
       "category": "token",
    @@ -204,7 +197,6 @@
       "issuerWebsite": "www.centraperk-cafe.com",
       "type": "centrapay.token.test",
       "externalId": "23403283262"
    -}
    -  
    \ No newline at end of file diff --git a/api/wallets/index.html b/api/wallets/index.html index cc3e7d525..241080c0e 100644 --- a/api/wallets/index.html +++ b/api/wallets/index.html @@ -12,13 +12,13 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    Wallets

    A Wallet is an Asset that represents Money  API . The Wallet maintains a record of all transactions it has participated in. A Wallet has a single balance and a single currency.

    +

    Wallets

    A Wallet is an Asset that represents Money  API . The Wallet maintains a record of all transactions it has participated in. A Wallet has a single balance and a single currency.

    Settlement Wallets experimental

    A Settlement Wallet is a special type of Wallet that can only receive or refund money related to a Payment Request  API . This means you cannot topup, withdraw, or send money from this Wallet.

    Wallet Model

    @@ -29,17 +29,16 @@

    Attributes

    • activityNumber

      bignumber

      Unique sequential Wallet transaction number.

    • amount

      bignumber

      Absolute transaction amount in cents.

    • Change to the Wallet’s balance in cents when the transaction was applied.

    • createdAt

      timestamp

      Transaction timestamp as ISO 8601 date string.

    • activityType

      string

      Hints to the type of transaction: undefined or returned-asset-transfer.

    • destWalletId

      string

      Id of the destination Wallet if applicable.

    • srcWalletId

      string

      Id of the source Wallet if applicable.

    • destParty

      string

      Display value for party receiving funds if applicable. Values may include a merchant name, user handle, masked user email, masked user phone, or bank account.

    • srcParty

      string

      Display value for party providing funds if applicable. Values may include a merchant name, user handle, masked user email, masked user phone, or bank account.

    • paymentRequestId

      string

      Unique identifier of the related Payment Request  API  if applicable.

    • topupId

      string

      Unique identifier of the related topup Funds Transfer  API  request if applicable.

    • assetTransferId

      string

      Unique identifier of the related Asset Transfer  API  request if applicable.

    • withdrawalId

      string

      Unique identifier of the related Withdrawal  API  request if applicable.


    -
    POST/api/wallets

    Create a Wallet

    This endpoint allows you to create a Wallet.

    Attributes

    Errors

    • ACCOUNT_MAX_WALLETS_REACHED

      403

      The maximum number of wallets for the given ledger has been reached.

    Request
    POST/api/wallets
        curl -X POST https://service.centrapay.com/api/wallets \
    +
    POST/api/wallets

    Create a Wallet

    This endpoint allows you to create a Wallet.

    Attributes

    Errors

    • ACCOUNT_MAX_WALLETS_REACHED

      403

      The maximum number of wallets for the given ledger has been reached.

    Request
    POST/api/wallets
    curl -X POST https://service.centrapay.com/api/wallets \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "accountId": "Te2uDM7xhDLWGVJU3nzwnh",
         "ledgerId": "centrapay.nzd.main",
         "settlement": "true"
    -  }'
    -  
    Response
        {
    +
    Response
    {
       "id": "WRhAxxWpTKb5U7pXyxQjjY",
       "accountId": "Te2uDM7xhDLWGVJU3nzwnh",
       "category": "money",
    @@ -52,16 +51,14 @@
       "balance": "0",
       "availableBalance": "6000",
       "settlement": true
    -}
    -  

    -
    GET/api/wallets

    List Wallets

    This endpoint allows you to list authorized Wallets.

    Attributes

    No attributes.

    Request
    GET/api/wallets
        curl https://service.centrapay.com/api/wallets \
    -  -H "X-Api-Key: $api_key"
    -  
    Response
        [
    +
    Response
    [
       {
         "id": "WRhAxxWpTKb5U7pXyxQjjY",
         "accountId": "Te2uDM7xhDLWGVJU3nzwnh",
    @@ -78,16 +75,14 @@
         "balance": "20",
         "availableBalance": "6000"
       }
    -]
    -  

    -
    GET/api/wallets/{walletId}/transactions

    List Wallet Transactions

    This endpoint allows you to list Wallet Transactions.

    Attributes

    No attributes.

    Request
    GET/api/wallets/{walletId}/transactions
        curl https://service.centrapay.com/api/wallets/WRhAxxWpTKb5U7pXyxQjjY/transactions \
    -  -H "X-Api-Key: $api_key"
    -  
    Response
        {
    +
    Response
    {
       "items": [
         {
           "activityNumber": "1",
    @@ -99,7 +94,6 @@
           "topupId": "77hqHDzw6KaaG2P2hoshUB"
         }
       ]
    -}
    -  
    \ No newline at end of file diff --git a/connections/farmlands/index.html b/connections/farmlands/index.html index 72f0a8549..d48f92adf 100644 --- a/connections/farmlands/index.html +++ b/connections/farmlands/index.html @@ -13,7 +13,7 @@ a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');

    Farmlands

    Farmlands has partnered with Centrapay to deliver new ways for your business to authorise and process Farmlands Card payments that are faster, easier, and more secure than ever.

    Made By
    Centrapay
    Links
    Website

    +

    Farmlands

    Farmlands has partnered with Centrapay to deliver new ways for your business to authorise and process Farmlands Card payments that are faster, easier, and more secure than ever.

    Made By
    Centrapay
    Links
    Website

    Overview

    In partnership with Centrapay, Farmlands has two new digital solutions that enable Card Partners to authorise Card payments in real-time, and process invoices to Farmlands faster. There are no transactional costs for Card Partners using these solutions.

    Your business can either fully integrate the Farmlands solution to your retail point of sale system, or access a secure web portal when accepting Farmlands Card as a form of payment for a sale anytime, anywhere.

    diff --git a/guides/creating-digital-tokens/index.html b/guides/creating-digital-tokens/index.html index 062b5c545..6d29bc1cd 100644 --- a/guides/creating-digital-tokens/index.html +++ b/guides/creating-digital-tokens/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Creating Digital Tokens

    Digital tokens are assets that can be exchanged for specific products or deals. Think a “Free coffee” coupon or a “50% off” voucher. +

    Creating Digital Tokens

    Digital tokens are assets that can be exchanged for specific products or deals. Think a “Free coffee” coupon or a “50% off” voucher. Unlike assets such as gift cards or currency, tokens can only be spent in their entirety, all at once.

    Token Collection

    A collection is a grouping of tokens that share the same attributes and redemption conditions, e.g.

    @@ -51,7 +51,7 @@
  • Create Collection

    You can create Collections by calling our Create Token Collection  API  endpoint. You will need the account identifier of the owning account for the accountId field. The maxValue field is optional, and defines the upper limit on any settlement amount for a redeemed token.

    -
    Request
    POST/api/collections
        curl -X POST https://service.centrapay.com/api/collections \
    +
    Request
    POST/api/collections
    curl -X POST https://service.centrapay.com/api/collections \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -66,15 +66,14 @@
           "amount": "400"
         },
         "type": "product"
    -  }'
    -  
  • Create Redemption Condition for each merchant, using the collection Id from step 1

    Redemption Conditions are created by calling the Create Redemption Condition  API  endpoint. You will need the merchant identifier for the merchantId field. The list of allowedProducts defines those products sold by the merchant that are eligible for redemption. The sku for the product will need to match the sku that is passed in with the line item when the merchant creates the payment during redemption: Create Payment Request  API .

    -
    Request
    POST/api/collections/{collectionId}/redemption-conditions
        curl -X POST https://service.centrapay.com/api/collections/NFhUgPQEYbk2EbTXAYArTX/redemption-conditions \
    +
    Request
    POST/api/collections/{collectionId}/redemption-conditions
    curl -X POST https://service.centrapay.com/api/collections/NFhUgPQEYbk2EbTXAYArTX/redemption-conditions \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -97,34 +96,31 @@
             }
           }
         ]
    -  }'
    -  
  • Create Token

    Tokens can be created for the collection by calling the Create Token  API  endpoint.

    -
    Request
    POST/api/tokens
        curl -X POST https://service.centrapay.com/api/tokens \
    +
    Request
    POST/api/tokens
    curl -X POST https://service.centrapay.com/api/tokens \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "collectionId": "NFhUgPQEYbk2EbTXAYArTX",
         "idempotencyKey": "token-de32dd90-b46c-11ea-93c3-83a333b86e7b"
    -  }'
    -  

    To create tokens directly into a user account, call our Create Token  API  endpoint and include the user’s accountId in your request.

    -
    Request
    POST/api/tokens
        curl -X POST https://service.centrapay.com/api/tokens \
    +
    Request
    POST/api/tokens
    curl -X POST https://service.centrapay.com/api/tokens \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "collectionId": "NFhUgPQEYbk2EbTXAYArTX",
         "idempotencyKey": "token-de32dd90-b46c-11ea-93c3-83a333b86e7b",
         "accountId": "WRhAxxWpTKb5U7pXyxQjjP"
    -  }'
    -  
  • diff --git a/guides/creating-test-money/index.html b/guides/creating-test-money/index.html index 3a338a980..62377b6d3 100644 --- a/guides/creating-test-money/index.html +++ b/guides/creating-test-money/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/ecommerce-website/index.html b/guides/ecommerce-website/index.html index 15e945351..02439ee25 100644 --- a/guides/ecommerce-website/index.html +++ b/guides/ecommerce-website/index.html @@ -12,17 +12,17 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    eCommerce

    eCommerce websites accepting payments via Centrapay may want to redirect their users back to their website after they pay/cancel the payment request. In order to do this, the eCommerce website must add allowedRedirectUrls to it’s Merchant Config  API .

    +

    eCommerce

    eCommerce websites accepting payments via Centrapay may want to redirect their users back to their website after they pay/cancel the payment request. In order to do this, the eCommerce website must add allowedRedirectUrls to it’s Merchant Config  API .

    After allowedRedirectUrls have been added to the Merchant Config, the eCommerce website can simply pass in their redirectUrl when creating a Payment Request  API .

    -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -32,7 +32,6 @@
           "currency": "NZD"
         },
         "redirectUrl": "https://www.example.com/store/checkout"
    -  }'
    -  
    \ No newline at end of file diff --git a/guides/example-oidc-consumer/index.html b/guides/example-oidc-consumer/index.html index d2afc460a..b7c3c3d81 100644 --- a/guides/example-oidc-consumer/index.html +++ b/guides/example-oidc-consumer/index.html @@ -12,18 +12,18 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Example OIDC Consumer

    This guide demonstrates how to integrate a browser based application with the Centrapay OAuth server using the oidc-client-js JavaScript library.

    +

    Example OIDC Consumer

    This guide demonstrates how to integrate a browser based application with the Centrapay OAuth server using the oidc-client-js JavaScript library.

    A good starting point for learning more about OIDC is Okta’s OAuth OIDC Illustrated Guide.

    OIDC User Manager Configuration

    -
    Example
        import Oidc from 'oidc-client';
    +
    Example
    import Oidc from 'oidc-client';
     
     Oidc.Log.logger = console;
     
    @@ -52,12 +52,11 @@
       automaticSilentRenew: true,
       monitorSession: false, // Suppress session event double firing
       extraQueryParams: { u: userPhoneNumber }, // Populate Centrapay login form
    -});
    -  

    Minimal OIDC Client Usage

    -
    Example
        async function login() {
    +
    Example
    async function login() {
       userManager.stopSilentRenew();
       userManager.clearStaleState();
       /* State attribute is stored and retrievable with OIDC callback state param */
    @@ -85,13 +84,12 @@
       return user;
     }
     
    -init().then(console.log);
    -  

    Trigger Token Refresh

    Manually trigger a token refresh when expired due to user being offline.

    -
    Example
        async function refreshUser() {
    +
    Example
    async function refreshUser() {
       const user await userManager.getUser();
       if (user.expired) {
         await userManager.signinSilent();
    @@ -107,20 +105,18 @@
       .then(console.log)
       .catch(err => {
         console.log({ msg: 'Something went wrong refreshing user token, login required', err });
    -  });
    -  

    Detect OIDC User Refresh

    Detect when OIDC user is refreshed via auto silent renew. The new user may have changed with updated claims, for example, if they have added an email address.

    -
    Example
        userManager.events.addUserLoaded((user) => {
    +
    Example
    userManager.events.addUserLoaded((user) => {
       console.log({ msg: 'user auto renew completed', user });
    -});
    -  

    OIDC Client Logout

    -
    Example
          async function logout() {
    +
    Example
      async function logout() {
         /* State attribute is stored and retrievable with OIDC callback state param */
         await userManager.signoutRedirect({ state: window.location.href });
       }
    @@ -131,7 +127,6 @@
         });
         /* Restore previous location stored against state param */
         window.location.replace(result.state || '/');
    -  }
    -  
    \ No newline at end of file diff --git a/guides/farmlands-card-partner-support/index.html b/guides/farmlands-card-partner-support/index.html index 4bef2516a..8e2e0a481 100644 --- a/guides/farmlands-card-partner-support/index.html +++ b/guides/farmlands-card-partner-support/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/farmlands-portal/index.html b/guides/farmlands-portal/index.html index b2b437a96..b2230d3f5 100644 --- a/guides/farmlands-portal/index.html +++ b/guides/farmlands-portal/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/farmlands-pos-integration/index.html b/guides/farmlands-pos-integration/index.html index 810963c13..4700778bc 100644 --- a/guides/farmlands-pos-integration/index.html +++ b/guides/farmlands-pos-integration/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Farmlands POS Integration Guide

    Centrapay and Farmlands have entered a partnership to enable a digital way for Farmlands Card Partners to accept Farmlands Card as payment at the point of sale. This solution will position Card Partners to be able to also accept a digital form of the Farmlands Card in the future.

    +

    Farmlands POS Integration Guide

    Centrapay and Farmlands have entered a partnership to enable a digital way for Farmlands Card Partners to accept Farmlands Card as payment at the point of sale. This solution will position Card Partners to be able to also accept a digital form of the Farmlands Card in the future.

    Farmlands Card Partners need to be approved by Farmlands prior to enabling Farmlands Card as a payment option through the Centrapay integration. Contact your Card Portfolio Manager or the Card Specialist team at card.specialist@farmlands.co.nz to work through the onboarding process.

    Centrapay Integration Benefits

    Integrating with Centrapay streamlines the process for authorising and invoicing Farmlands Card Payments. The integration provides:

    @@ -74,7 +74,7 @@
    1. The POS creates a Payment Request  API  with the Farmlands Card barcode.
    -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -105,11 +105,10 @@
           "amount": "10000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "conditionsEnabled": true,
       "configId": "5ee168e8597be5002af7b454",
    @@ -162,19 +161,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. The POS polls the Payment Request  API  every second for status changes.
    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "conditionsEnabled": true,
       "configId": "5ee168e8597be5002af7b454",
    @@ -227,19 +224,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. Polling the Payment Request  API  returns a list of pending merchantConditions in the response. The POS must prompt the cashier to accept  API  or decline  API  each Payment Condition in order to successfully complete a payment.
    -
    Request
    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/accept
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/conditions/1/accept \
    -  -H "X-Api-Key: $api_key"
    -  
    -
    Response
        {
    +
    Response
    {
       "activityNumber": "2",
       "conditionId": "1",
       "createdAt": "2022-05-12T01:17:00.000Z",
    @@ -255,17 +250,15 @@
         "currency": "NZD",
         "amount": 100
       }
    -}
    -  

    A successful payment is identified when all Payment Conditions have an accepted status and the Payment Request  API  status is paid. Here, the POS must stop polling and display confirmation of the successful payment.

    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "conditionsEnabled": true,
       "configId": "5ee168e8597be5002af7b454",
    @@ -318,8 +311,7 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  

    Payment Flow Implementation

    @@ -344,9 +336,8 @@

    Authentication

    Requests to Centrapay’s APIs are authenticated  API  by providing an API key in the X-Api-Key header. API Keys  API  provide enduring access to a single Centrapay account.

    -
    Request
    GET/api/account-memberships
        curl https://service.centrapay.com/api/account-memberships \
    -  -H "X-Api-Key: $api_key"
    -  
    @@ -433,7 +424,7 @@
  • The Cardholder presents their Farmlands Card for the POS to scan.
  • The POS authorises a Pre Auth payment by creating a Payment Request  API  with the barcode on the Farmlands Card and the preauth flag. Creating a Payment Request must also enable the Payment Conditions extension and include full details for all Line Items  API .
  • -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -463,11 +454,10 @@
           "amount": "10000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "conditionsEnabled": true,
       "configId": "5efbe2fb96c08357bb2b9242",
    @@ -520,19 +510,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. The POS polls the Payment Request  API  every second for status changes.
    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "conditionsEnabled": true,
       "configId": "5ee168e8597be5002af7b454",
    @@ -585,19 +573,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. Polling the Payment Request  API  returns a list of pending merchantConditions in the response. The POS must prompt the cashier to accept  API  or decline  API  each Payment Condition in order to successfully authorise a Pre Auth payment.
    -
    Request
    POST/api/payment-requests/{paymentRequestId}/conditions/{conditionId}/accept
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/conditions/1/accept \
    -  -H "X-Api-Key: $api_key"
    -  
    -
    Response
        {
    +
    Response
    {
       "activityNumber": "2",
       "conditionId": "1",
       "createdAt": "2022-05-12T01:17:00.000Z",
    @@ -613,17 +599,15 @@
         "currency": "NZD",
         "amount": 100
       }
    -}
    -  

    A successful authorisation is identified when all Payment Conditions have an accepted status, the Payment Request  API  status is paid and the preAuthStatus is authorized. Here, the POS must stop polling and display confirmation of the successful authorisation.

    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "conditionsEnabled": true,
       "configId": "5ee168e8597be5002af7b454",
    @@ -677,14 +661,13 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. When the purchase is ready to be fulfilled, the POS makes a Pre Auth confirmation  API  against the Payment Request  API . Multiple confirmations can be performed against an authorisation but the total value cannot exceed the original authorised value.
    -
    Request
    POST/api/payment-requests/{paymentRequestId}/confirm
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/confirm \
    +
    Request
    POST/api/payment-requests/{paymentRequestId}/confirm
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/confirm \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -704,11 +687,10 @@
           "amount": "4000",
           "currency": "NZD"
         },
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "activityNumber": "3",
       "createdAt": "2021-06-08T04:04:27.426Z",
       "createdByAccountId": "Jaim1Cu1Q55uooxSens6yk",
    @@ -734,8 +716,7 @@
         "amount": "4000",
         "currency": "NZD"
       }
    -}
    -  
      @@ -745,12 +726,11 @@

      Only call release if there are funds requiring release.

      -
      Request
      POST/api/payment-requests/{paymentRequestId}/release
          curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/release \
      -  -H "X-Api-Key: $api_key"
      -  
      -
      Response
          {
      +
      Response
      {
         "activityNumber": "4",
         "assetType": "farmlands.nzd.main",
         "createdAt": "2021-06-12T01:17:00.000Z",
      @@ -768,8 +748,7 @@
           "currency": "NZD",
           "amount": "6000"
         }
      -}
      -  
      @@ -779,7 +758,7 @@

      Farmlands Card Partners must support this extension if they accept payments when the Cardholder is not physically present when a payment is authorised. For example, to accept phone-based orders or orders where the Farmlands barcode is already known.

      Please refer to your Farmlands Card Partner Acceptance Terms and Conditions to understand the risks involved with these transactions.

      Card Partners can extend the Barcode Flow to support this by creating Payment Requests  API  with the patronNotPresent flag set to true.

      -
      Request
      POST/api/payment-requests
          curl -X POST https://service.centrapay.com/api/payment-requests \
      +
      Request
      POST/api/payment-requests
      curl -X POST https://service.centrapay.com/api/payment-requests \
         -H "X-Api-Key: $api_key" \
         -H "Content-Type: application/json" \
         -d '{
      @@ -811,8 +790,7 @@
             "amount": "10000",
             "currency": "NZD"
           }
      -  }'
      -  
      @@ -820,25 +798,23 @@

    Validating Farmlands Barcodes

    Farmlands Card Partners may optionally decode a scanned Farmlands Barcode  API  to confirm that it is valid and apply Farmlands discounts before creating a Payment Request  API .

    -
    Request
    POST/api/decode
        curl -X POST https://service.centrapay.com/api/decode \
    +
    Request
    POST/api/decode
    curl -X POST https://service.centrapay.com/api/decode \
       -H "Authorization: $jwt" \
       -H "Content-Type: application/json" \
       -d '{
         "code": "123456789",
         "merchantConfigId": "5ee168e8597be5002af7b454",
         "scannedBy": "merchant"
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "code": "123456789",
       "displayName": "Farmlands Card",
       "merchantConfigId": "5ee168e8597be5002af7b454",
       "provider": "farmlands",
       "scannedBy": "merchant"
    -}
    -  

    Handling Payment Errors

    @@ -874,7 +850,7 @@
  • The Cardholder presents a transaction reference on their paper receipt. The POS looks up the Payment Request  API  ID using the transaction reference.
  • The POS refunds the Payment Request  API  using its ID.
  • -
    Request
    POST/api/payment-requests/{paymentRequestId}/refund
        curl -X POST https://service.centrapay.com/api/payment-requests/{paymentRequestId}/refund \
    +
    Request
    POST/api/payment-requests/{paymentRequestId}/refund
    curl -X POST https://service.centrapay.com/api/payment-requests/{paymentRequestId}/refund \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -894,11 +870,10 @@
           "amount": "6000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "activityNumber": "4",
       "assetType": "farmlands.nzd.main",
       "createdAt": "2021-06-12T01:17:00.000Z",
    @@ -916,8 +891,7 @@
         "currency": "NZD",
         "amount": "100"
       }
    -}
    -  
    diff --git a/guides/initiating-refunds/index.html b/guides/initiating-refunds/index.html index 64aea1d63..1a77c9ed1 100644 --- a/guides/initiating-refunds/index.html +++ b/guides/initiating-refunds/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/integrating-third-party-asset/index.html b/guides/integrating-third-party-asset/index.html index d1c176bad..404e7a6f9 100644 --- a/guides/integrating-third-party-asset/index.html +++ b/guides/integrating-third-party-asset/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Third-party Asset

    By integrating with Centrapay as a third-party asset provider, you can take advantage of our connections with terminals, point-of-sale systems, and merchant networks, thereby expanding the reach of your digital asset to a wider audience.

    +

    Third-party Asset

    By integrating with Centrapay as a third-party asset provider, you can take advantage of our connections with terminals, point-of-sale systems, and merchant networks, thereby expanding the reach of your digital asset to a wider audience.

    Once you have defined your asset as a Payment Method with Centrapay and implemented the required Uplink APIs, consumers will be able to spend your digital asset using one of our payment flows wherever merchants accept your digital asset.

    Defining a Payment Method

    We require a way of identifying your asset in order to route payments to the correct asset provider. You must define a payment method namespace, description, and list of supported currencies.

    @@ -93,11 +93,10 @@

    Endpoints are authenticated against requests using a JSON Web Token (JWT) issued by Centrapay. The JWT will be sent through the Authorization header in the HTTP Request.

    Verify the JWT using the public key returned for the JSON Web Key Set (JWKS) endpoint with the matching kid.

    Keys used for signing JWTs may be rotated without warning, therefore it is required that signatures are resolved dynamically against the JWKS endpoint. You may choose to cache the result, but respect the directives in the http cache-control headers.

    -
    JWKS Request
    GET/api/.well-known/jwks.json
        curl https://auth.centrapay.com/api/.well-known/jwks.json
    -  
    -
    JWKS Response
        {
    +
    JWKS Response
    {
       "keys": [
         {
           "kty": "EC",
    @@ -109,18 +108,16 @@
           "alg": "ES256"
         }
       ]
    -}
    -  

    To verify a request start by decoding the JWT.

    -
    Decoded JWT Payload
        {
    +
    Decoded JWT Payload
    {
       "iat": "1684105185",
       "exp": "1684105485",
       "aud": "https://your.endpoint",
       "request_body_sha256": "b9195bf41bf0e38ab0ab44e7ef5b9af5cb0fe2ece8dee5d112d7485bf4ef0007",
    -}
    -  
    @@ -153,7 +150,7 @@

    Exp is provided as a default expiry. Alternatively, use iat + your own expiry window to determine if the JWT has expired.

    Assert that the audience is correct by checking that aud is equal to the base URL of your Uplink API.

    The request_body_sha256 property should be used to verify that the request payload has not been tampered with. This should be done by hashing the received request payload using the SHA256 algorithm and checking for equality with request_body_sha256 as shown below.

    -
    Example
        const crypto = require("crypto");
    +
    Example
    const crypto = require("crypto");
     
     const decodedJwt = {
       request_body_sha256: "d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35",
    @@ -170,8 +167,7 @@
     
     if (decodedJwt["request_body_sha256"] != hashedPayload) {
       throw new Error("Payload hashes do not match");
    -}
    -  

    If any of the above assertions are not met the request must be rejected.

    @@ -320,7 +316,7 @@

    Loading Diagram...

    -
    Request
    POST/pay
        curl -X POST https://your.endpoint/pay \
    +
    Request
    POST/pay
    curl -X POST https://your.endpoint/pay \
     	-H "Authorization: ${jwt}" \
     	-H "Content-Type: application/json" \
     	-d '{
    @@ -331,11 +327,10 @@
     		"merchantId": "MhocUmpxxmgdHjr7DgKoKw",
     		"idempotencyKey": "VMXMkUttDGTVz4ESv5ND56",
     		"transactionId": "UttDGTHjr7DgKoKwWpTKb"
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "currency": "NZD",
       "amount": "1000",
       "authorization": "WRhAxxWpTKb5U7pXyxQjjY",
    @@ -347,8 +342,7 @@
       "status": "successful",
       "refundable": true,
       "refundBefore": "2023-06-09T00:52:22.468Z"
    -}
    -  

    Failure Reasons

    @@ -373,7 +367,7 @@

    Refund Endpoint

    This endpoint is used to refund a Payment Request with status paid. Refunds must be synchronous i.e. the status must be successful or failed.

    It is expected that partial refunds are supported.

    -
    Request
    POST/refund
        curl -X POST https://your.endpoint/refund \
    +
    Request
    POST/refund
    curl -X POST https://your.endpoint/refund \
     	-H "Authorization: ${jwt}" \
     	-H "Content-Type: application/json" \
     	-d '{
    @@ -381,11 +375,10 @@
     		"amount": "1000",
     		"paymentTransactionId": "HFCD73hsbJHBDd9gs3t",
     		"idempotencyKey": "dDHF8743fVzdsg84f6"
    -	}'
    -  
    -
    Response
        {
    +
    Response
    {
       "currency": "NZD",
       "amount": "1000",
       "authorization": "WRhAxxWpTKb5U7pXyxQjjY",
    @@ -395,8 +388,7 @@
       "idempotencyKey": "dDHF8743fVzdsg84f6",
       "type": "refund",
       "status": "successful"
    -}
    -  

    Failure Reasons

    @@ -419,17 +411,16 @@

    The Cancel endpoint can be used to stop processing a transaction that has status pending. If the Cancel endpoint is called for a transaction that already has successful or failed, it is expected that an error will be thrown.

    Once the Cancel endpoint is called, the transaction status should be failed. This is a synchronous call and cannot return status pending. The reason for cancellation will be passed through as a failureReason.

    Example Request

    -
    Request
    POST/cancel
        curl -X POST https://your.endpoint/cancel \
    +
    Request
    POST/cancel
    curl -X POST https://your.endpoint/cancel \
     	-H "Authorization: ${jwt}" \
     	-H "Content-Type: application/json" \
     	-d '{
     		"transactionId": "UttDGTHjr7DgKoKwWpTKb",
     		"failureReason": "PAYMENT_REQUEST_EXPIRED"
    -	}'
    -  
    -
    Response
        {
    +
    Response
    {
       "currency": "NZD",
       "amount": "1000",
       "authorization": "WRhAxxWpTKb5U7pXyxQjjY",
    @@ -440,8 +431,7 @@
       "type": "payment",
       "status": "failed",
       "failureReason": "PAYMENT_REQUEST_EXPIRED"
    -}
    -  

    Failure Reasons

    @@ -465,12 +455,11 @@
    NameDescription
    CANCELLED_BY_MERCHANTThe merchant has initiated a cancel of the payment request.
    PAYMENT_REQUEST_EXPIREDThe payment request has expired before being paid.

    Get Transaction Endpoint

    After initiating a payment transaction, the status may be pending. This endpoint will be used to poll the status of the transaction attempt. Polling will continue until either the transaction attempt status is successful or failed, or the Centrapay Payment Request is no longer payable (e.g. it has expired).

    -
    Request
    GET/get?transactionId=${transactionId}
        curl https://your.endpoint/get?transactionId=UttDGTHjr7DgKoKwWpTKb
    -	-H "Authorization: ${jwt}"
    -  
    -
    Response
        {
    +
    Response
    {
       "currency": "NZD",
       "amount": "1000",
       "authorization": "WRhAxxWpTKb5U7pXyxQjjY",
    @@ -482,8 +471,7 @@
       "status": "successful",
       "refundable": "true",
       "refundBefore": "2023-06-09T00:52:22.468Z"
    -}
    -  

    Implementation Checklist

    diff --git a/guides/line-items/index.html b/guides/line-items/index.html index 94f6b9b62..ce4d80127 100644 --- a/guides/line-items/index.html +++ b/guides/line-items/index.html @@ -12,20 +12,20 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Line Items

    Line Items  API  are used to communicate the details of a purchase to a patron.

    +

    Line Items

    Line Items  API  are used to communicate the details of a purchase to a patron.

    Restrictions

    1. The price of a Line Item MUST represent the amount that a patron will pay for that Line Item, including tax and any discounts applied (e.g. price = product price * qty - discounts + tax).
    -
    Example
        [
    +
    Example
    [
       {
         "name": "Cinema Tickets",
         "sku": "123456789",
    @@ -34,8 +34,7 @@
         "tax": "15.0",
         "discount": "1000" // $10
       }
    -]
    -  
      @@ -45,7 +44,7 @@
    1. The discount for each Line Item MUST be provided in cents and is tax exclusive.
    2. A discount that applies to multiple line items may be represented as a separate line item with a negative amount.
    -
    Example
        [
    +
    Example
    [
       {
         "name": "Cinema Tickets",
         "sku": "123456789",
    @@ -67,8 +66,7 @@
         "price": "-1500", // $15 (discount)
         "tax": "15.0"
       }
    -]
    -  

    Determining Paid For Line Items

    @@ -77,7 +75,7 @@ This information should also be displayed to a consumer when possible. If any line items were purchased by a specific asset, they will be returned on a Payment Request  API  inside the Asset Totals  API  array. Integrators must iterate through the assetTotals array and display any line items purchased to the merchant. Line items that have been purchased via Centrapay must no longer be able to be purchased using another form of payment. This is especially important for any assets which are only redeemable against specific line items. For example, there could be a case where someone used a digital token to pay for a line item, and then a physical voucher to pay for that same line item, which would mean the second voucher could go towards purchasing something other than the intended line item.

    -
    Example
          {
    +
    Example
      {
         "type": "centrapay.token.main",
         "description": "Centrapay Token",
         "settlementDate": "2021-06-28T04:04:27.426Z",
    @@ -94,7 +92,6 @@
             "tax": "15.00"
           }
         ]
    -  }
    -  
    \ No newline at end of file diff --git a/guides/loading-and-sending-assets/index.html b/guides/loading-and-sending-assets/index.html index ec2e97996..668f04b7c 100644 --- a/guides/loading-and-sending-assets/index.html +++ b/guides/loading-and-sending-assets/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Loading and Sending Assets

    Assets  API  such as Giftcards or Tokens can be issued by a Centrapay Account. They can then be sent to another Centrapay account using one of the methods described below.

    +

    Loading and Sending Assets

    Assets  API  such as Giftcards or Tokens can be issued by a Centrapay Account. They can then be sent to another Centrapay account using one of the methods described below.

    Sending Assets

    You can send Assets such as Tokens and Giftcards by calling our Create Asset Transfers  API  endpoint.

    For any asset transfer that is not claimed within 2 weeks, the sent asset will be returned to the sender.

    @@ -28,40 +28,37 @@

    Provide the recipient’s phone number or email in the recipientAlias field when creating the asset transfer. The recipient will be notified via the provided channel.

    Use the recipient’s phone number for the recipientAlias field

    -
    Request
    POST/api/asset-transfers
        curl -X POST https://service.centrapay.com/api/asset-transfers \
    +
    Request
    POST/api/asset-transfers
    curl -X POST https://service.centrapay.com/api/asset-transfers \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "assetId": "YGRo6TYYSxH3js7",
         "recipientAlias": "+642212312"
    -  }'
    -  

    Use the recipient’s email for the recipientAlias field.

    -
    Request
    POST/api/asset-transfers
        curl -X POST https://service.centrapay.com/api/asset-transfers \
    +
    Request
    POST/api/asset-transfers
    curl -X POST https://service.centrapay.com/api/asset-transfers \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "assetId": "YGRo6TYYSxH3js7",
         "recipientAlias": "john.doe@centrapay.com"
    -  }'
    -  

    If a recipientAlias isn’t provided when creating the asset transfer, a link will be returned in the url field, which can then be shared via whichever channel you prefer. Clicking on the link will open a page to view and claim the asset transfer.

    -
    Request
    POST/api/asset-transfers
        curl -X POST https://service.centrapay.com/api/asset-transfers \
    +
    Request
    POST/api/asset-transfers
    curl -X POST https://service.centrapay.com/api/asset-transfers \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
         "assetId": "YGRo6TYYSxH3js7"
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "id": "EL49tYKmAAkp2njVMs39mrP",
       "status": "created",
       "assetId": "YGRo6TYYSxH3js7",
    @@ -71,8 +68,7 @@
       "updatedAt": "2023-11-20T05:01:31.634Z",
       "suppressNotifications": false,
       "url": "https://app.centrapay.com/transfer/EL49tYKmAAkp2njVMs39mrP"
    -}
    -  

    Loading Giftcards

    @@ -85,11 +81,10 @@
  • A script to load and send Giftcards
  • Here’s an example of the CSV named input.csv:

    -
    Example
        recipientAlias,cardNumber,pin,message
    +
    Example
    recipientAlias,cardNumber,pin,message
     +64221231234,23403321042,1111,Hello Bob! Here's your giftcard
     +64221231235,23403321042,1111,Hello Alice! Here's your giftcard
    -+64221231236,23403321042,1111,Hello Eve! Here's your giftcard
    -  
    @@ -102,7 +97,7 @@
  • An API Key  API  to call our APIs
  • Your Account id  API  for the initial load of each Giftcard
  • -
    Example
        #!/usr/bin/env node
    +
    Example
    #!/usr/bin/env node
     
     const apiKey = 'api123'; // FIXME
     const accountId = 'acc123'; // FIXME
    @@ -185,7 +180,6 @@
     // entry into the script
     run()
       .then(console.log)
    -  .catch(console.error);
    -  
    \ No newline at end of file diff --git a/guides/merchant-integration-barcode-flow/index.html b/guides/merchant-integration-barcode-flow/index.html index 4889bcad5..b8dc9f95c 100644 --- a/guides/merchant-integration-barcode-flow/index.html +++ b/guides/merchant-integration-barcode-flow/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Barcode Flow for Merchants

    Connecting with patrons using our Barcode Flow requires the patron to present a Barcode and the merchant integration to scan it in order to create a Payment Request  API .

    +

    Barcode Flow for Merchants

    Connecting with patrons using our Barcode Flow requires the patron to present a Barcode and the merchant integration to scan it in order to create a Payment Request  API .

    Barcode Flow

    The sequence diagram below indicates the expected flow of behavior between the patron, the Point of Sale (POS) and Centrapay.

    @@ -53,7 +53,7 @@
  • The patron presents a Barcode for the POS to scan.
  • The POS creates a Centrapay Payment Request  API  with the Barcode.
  • -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -63,11 +63,10 @@
           "amount": "10000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -92,19 +91,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. The POS polls the Payment Request for  API  Payment Confirmation.
    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -128,24 +125,22 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. While the POS continues to poll, the patron pays the Payment Request  API  via their Centrapay integrated app.
    -
    Request
    POST/api/payment-requests/{paymentRequestId}/pay
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/pay \
    +
    Request
    POST/api/payment-requests/{paymentRequestId}/pay
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/pay \
       -H "Authorization: $jwt" \
       -H "Content-Type: application/json" \
       -d '{
         "assetType": "centrapay.nzd.main",
         "assetId": "WRhAxxWpTKb5U7pXyxQjjY"
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "activityNumber": "2",
       "assetType": "centrapay.nzd.main",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -162,17 +157,15 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  

    When the Payment Request status is paid, the POS stops polling and displays confirmation of the successful payment.

    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -197,8 +190,7 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  

    Quick Pay Flow

    @@ -231,7 +223,7 @@
  • The patron presents a Barcode for the POS to scan.
  • The POS creates a Centrapay Payment Request  API  with the Barcode.
  • -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -241,11 +233,10 @@
           "amount": "10000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -270,19 +261,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. The POS polls the Payment Request for  API  payment confirmation.
    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -306,19 +295,17 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. When Centrapay receives the first attempt to poll the Payment Request, it will automatically trigger payment. After payment is successful and the Payment Request status is paid; the POS stops polling and displays confirmation of the successful payment.
    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -343,8 +330,7 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  

    Checking Barcode Details

    @@ -371,31 +357,29 @@
  • The patron presents a barcode for the POS to scan.
  • The POS decodes the scanned barcode  API  and applies any provider-related discounts.
  • -
    Request
    POST/api/decode
        curl -X POST https://service.centrapay.com/api/decode \
    +
    Request
    POST/api/decode
    curl -X POST https://service.centrapay.com/api/decode \
       -H "Authorization: $jwt" \
       -H "Content-Type: application/json" \
       -d '{
         "code": "123456789",
         "merchantConfigId": "5ee168e8597be5002af7b454",
         "scannedBy": "merchant"
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "code": "123456789",
       "displayName": "PayPal",
       "merchantConfigId": "5ee168e8597be5002af7b454",
       "provider": "paypal",
       "scannedBy": "merchant"
    -}
    -  
    1. The POS creates a Payment Request  API  with the barcode and continues with either the Barcode Flow or Quick Pay Flow.
    -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -405,11 +389,10 @@
           "amount": "10000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "barcode": "123456789",
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -434,7 +417,6 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    \ No newline at end of file diff --git a/guides/merchant-integration-error-handling/index.html b/guides/merchant-integration-error-handling/index.html index ddaf7e7bf..b69d2739d 100644 --- a/guides/merchant-integration-error-handling/index.html +++ b/guides/merchant-integration-error-handling/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/merchant-integration-qr-code-flow/index.html b/guides/merchant-integration-qr-code-flow/index.html index 97d55e9f3..1a98d4f85 100644 --- a/guides/merchant-integration-qr-code-flow/index.html +++ b/guides/merchant-integration-qr-code-flow/index.html @@ -12,15 +12,15 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    QR Code Flow for Merchants

    Connecting with patrons using our QR Code Flow requires the merchant integration to create a Payment Request  API  and present a QR Code for the patron to scan.

    +

    QR Code Flow for Merchants

    Connecting with patrons using our QR Code Flow requires the merchant integration to create a Payment Request  API  and present a QR Code for the patron to scan.

    The sequence diagram below indicates the expected flow of behavior between the patron, the Point of Sale (POS) and Centrapay.

    The QR code decodes to a URL of the form https://service.centrapay.com/api/payment-requests/{paymentRequestId}/pay

    -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -64,11 +64,10 @@
           "amount": "10000",
           "currency": "NZD"
         }
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
       "expiresAt": "2021-06-08T04:06:27.426Z",
    @@ -90,20 +89,18 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. The patron scans the QR code using a Centrapay-enabled app.
    2. The POS polls the Payment Request for  API  Payment Confirmation.
    -
    Request
    GET/api/payment-requests/{paymentRequestId}
        curl https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw \
    -  -H "Authorization: $jwt"
    -  
    -
    Response
        {
    +
    Response
    {
       "configId": "5ee168e8597be5002af7b454",
       "createdAt": "2021-06-08T04:04:27.426Z",
       "expiresAt": "2021-06-08T04:06:27.426Z",
    @@ -125,24 +122,22 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    1. While the POS continues to poll, the patron pays the Payment Request  API  via their Centrapay integrated app. When the Payment Request status is paid, the POS stops polling and displays confirmation of the successful payment.
    -
    Request
    POST/api/payment-requests/{paymentRequestId}/pay
        curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/pay \
    +
    Request
    POST/api/payment-requests/{paymentRequestId}/pay
    curl -X POST https://service.centrapay.com/api/payment-requests/MhocUmpxxmgdHjr7DgKoKw/pay \
       -H "Authorization: $jwt" \
       -H "Content-Type: application/json" \
       -d '{
         "assetType": "centrapay.nzd.main",
         "assetId": "WRhAxxWpTKb5U7pXyxQjjY"
    -  }'
    -  
    -
    Response
        {
    +
    Response
    {
       "activityNumber": "2",
       "assetType": "centrapay.nzd.main",
       "createdAt": "2021-06-08T04:04:27.426Z",
    @@ -159,7 +154,6 @@
         "currency": "NZD",
         "amount": "10000"
       }
    -}
    -  
    \ No newline at end of file diff --git a/guides/partial-payment-extension/index.html b/guides/partial-payment-extension/index.html index 64f85fdf8..98ff4bcbd 100644 --- a/guides/partial-payment-extension/index.html +++ b/guides/partial-payment-extension/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/patron-not-present/index.html b/guides/patron-not-present/index.html index 311ca4796..f9fd8327d 100644 --- a/guides/patron-not-present/index.html +++ b/guides/patron-not-present/index.html @@ -12,17 +12,17 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + -

    +

    Guides -

    Patron Not Present

    Centrapay’s Patron Not Present extension allows a merchant to complete a payment when the patron is not physically present at the time of payment (e.g. phone-based orders).

    +

    Patron Not Present

    Centrapay’s Patron Not Present extension allows a merchant to complete a payment when the patron is not physically present at the time of payment (e.g. phone-based orders).

    You can enable this extension by creating a Payment Request  API  with the patronNotPresent flag set to true.

    -
    Request
    POST/api/payment-requests
        curl -X POST https://service.centrapay.com/api/payment-requests \
    +
    Request
    POST/api/payment-requests
    curl -X POST https://service.centrapay.com/api/payment-requests \
       -H "X-Api-Key: $api_key" \
       -H "Content-Type: application/json" \
       -d '{
    @@ -43,7 +43,6 @@
           "amount": "6000",
           "currency": "NZD"
         }
    -  }'
    -  
    \ No newline at end of file diff --git a/guides/payment-conditions/index.html b/guides/payment-conditions/index.html index b3ce9f7c8..e725e8f42 100644 --- a/guides/payment-conditions/index.html +++ b/guides/payment-conditions/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/payment-flows/index.html b/guides/payment-flows/index.html index d42646d24..7ab16d291 100644 --- a/guides/payment-flows/index.html +++ b/guides/payment-flows/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/payment-terminals/index.html b/guides/payment-terminals/index.html index 8493c90e3..14e4fad19 100644 --- a/guides/payment-terminals/index.html +++ b/guides/payment-terminals/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/point-of-sale/index.html b/guides/point-of-sale/index.html index 55a23899b..3172e73d9 100644 --- a/guides/point-of-sale/index.html +++ b/guides/point-of-sale/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/requesting-payment/index.html b/guides/requesting-payment/index.html index 65defc8e5..3b17da2eb 100644 --- a/guides/requesting-payment/index.html +++ b/guides/requesting-payment/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/requesting-pre-auth/index.html b/guides/requesting-pre-auth/index.html index 9d4200183..7c8687a34 100644 --- a/guides/requesting-pre-auth/index.html +++ b/guides/requesting-pre-auth/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/third-party-application-payments/index.html b/guides/third-party-application-payments/index.html index 52af3ab5a..76a34083d 100644 --- a/guides/third-party-application-payments/index.html +++ b/guides/third-party-application-payments/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/guides/transaction-reporting/index.html b/guides/transaction-reporting/index.html index a2394abe9..34be6c5f3 100644 --- a/guides/transaction-reporting/index.html +++ b/guides/transaction-reporting/index.html @@ -12,7 +12,7 @@ r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - + diff --git a/index.html b/index.html index fb23484f6..bca51ebe3 100644 --- a/index.html +++ b/index.html @@ -14,7 +14,7 @@ })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); - +