diff --git a/404.html b/404.html index 9462a1d..fa90cdb 100644 --- a/404.html +++ b/404.html @@ -3,11 +3,11 @@ -Page Not Found | Pass Culture documentation - - +Page Not Found | Pass Culture documentation + + -
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

\ No newline at end of file diff --git a/assets/js/1a48a6a8.a1cb5d72.js b/assets/js/1a48a6a8.a1cb5d72.js deleted file mode 100644 index c1f484b..0000000 --- a/assets/js/1a48a6a8.a1cb5d72.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[235],{7525:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"API Resources","description":"All the information you need to know to be able to efficiently use our APIs.","slug":"/category/api-resources","permalink":"/pass-culture-api-documentation/docs/category/api-resources","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Authentication & Authorization","permalink":"/pass-culture-api-documentation/docs/understanding-our-api/authentication-authorization"},"next":{"title":"Individual offers","permalink":"/pass-culture-api-documentation/docs/understanding-our-api/resources/individual-offers"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/2cca2f44.4a4deaea.js b/assets/js/2cca2f44.4a4deaea.js new file mode 100644 index 0000000..d111e49 --- /dev/null +++ b/assets/js/2cca2f44.4a4deaea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[666],{4989:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var a=n(4848),i=n(8453);const r={sidebar_position:1},s="Create an event with an external ticketing system",o={id:"tutorials/create-an-event-linked-to-an-external-ticketing-systems",title:"Create an event with an external ticketing system",description:"TO DO !",source:"@site/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems.md",sourceDirName:"tutorials",slug:"/tutorials/create-an-event-linked-to-an-external-ticketing-systems",permalink:"/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Tutorials",permalink:"/docs/category/tutorials"},next:{title:"Create an educational event",permalink:"/docs/tutorials/create-a-educational-event"}},c={},l=[];function u(t){const e={h1:"h1",p:"p",...(0,i.R)(),...t.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e.h1,{id:"create-an-event-with-an-external-ticketing-system",children:"Create an event with an external ticketing system"}),"\n",(0,a.jsx)(e.p,{children:"TO DO !"})]})}function d(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(u,{...t})}):u(t)}},8453:(t,e,n)=>{n.d(e,{R:()=>s,x:()=>o});var a=n(6540);const i={},r=a.createContext(i);function s(t){const e=a.useContext(r);return a.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:s(t.components),a.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/2cca2f44.d94fc4a9.js b/assets/js/2cca2f44.d94fc4a9.js deleted file mode 100644 index eb0e646..0000000 --- a/assets/js/2cca2f44.d94fc4a9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[666],{4989:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>u});var a=n(4848),i=n(8453);const s={sidebar_position:1},r="Create an event with an external ticketing system",o={id:"tutorials/create-an-event-linked-to-an-external-ticketing-systems",title:"Create an event with an external ticketing system",description:"TO DO !",source:"@site/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems.md",sourceDirName:"tutorials",slug:"/tutorials/create-an-event-linked-to-an-external-ticketing-systems",permalink:"/pass-culture-api-documentation/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Tutorials",permalink:"/pass-culture-api-documentation/docs/category/tutorials"},next:{title:"Create an educational event",permalink:"/pass-culture-api-documentation/docs/tutorials/create-a-educational-event"}},c={},u=[];function l(t){const e={h1:"h1",p:"p",...(0,i.R)(),...t.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e.h1,{id:"create-an-event-with-an-external-ticketing-system",children:"Create an event with an external ticketing system"}),"\n",(0,a.jsx)(e.p,{children:"TO DO !"})]})}function d(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(l,{...t})}):l(t)}},8453:(t,e,n)=>{n.d(e,{R:()=>r,x:()=>o});var a=n(6540);const i={},s=a.createContext(i);function r(t){const e=a.useContext(s);return a.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),a.createElement(s.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/2ef814bc.1e9a1001.js b/assets/js/2ef814bc.1e9a1001.js new file mode 100644 index 0000000..02059ad --- /dev/null +++ b/assets/js/2ef814bc.1e9a1001.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[680],{6227:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>l});var o=n(4848),r=n(8453);const s={sidebar_position:2},i="Collective offers",c={id:"understanding-our-api/resources/collective-offers",title:"Collective offers",description:"Collectives offers are events maint for scholar groupes. They can be managed using the collective offers endpoints.",source:"@site/docs/understanding-our-api/resources/collective-offers.md",sourceDirName:"understanding-our-api/resources",slug:"/understanding-our-api/resources/collective-offers",permalink:"/docs/understanding-our-api/resources/collective-offers",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Individual offers",permalink:"/docs/understanding-our-api/resources/individual-offers"},next:{title:"Tutorials",permalink:"/docs/category/tutorials"}},a={},l=[];function u(e){const t={a:"a",h1:"h1",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"collective-offers",children:"Collective offers"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Collectives offers"})," are ",(0,o.jsx)(t.strong,{children:"events maint for scholar groupes"}),". They can be managed using the ",(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.a,{href:"/rest-api#tag/Collective-offers",children:"collective offers endpoints"})}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var o=n(6540);const r={},s=o.createContext(r);function i(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2ef814bc.baaf92df.js b/assets/js/2ef814bc.baaf92df.js deleted file mode 100644 index 7f602e1..0000000 --- a/assets/js/2ef814bc.baaf92df.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[680],{6227:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var o=n(4848),r=n(8453);const s={sidebar_position:2},i="Collective offers",c={id:"understanding-our-api/resources/collective-offers",title:"Collective offers",description:"Collectives offers are events maint for scholar groupes. They can be managed using the collective offers endpoints.",source:"@site/docs/understanding-our-api/resources/collective-offers.md",sourceDirName:"understanding-our-api/resources",slug:"/understanding-our-api/resources/collective-offers",permalink:"/pass-culture-api-documentation/docs/understanding-our-api/resources/collective-offers",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Individual offers",permalink:"/pass-culture-api-documentation/docs/understanding-our-api/resources/individual-offers"},next:{title:"Tutorials",permalink:"/pass-culture-api-documentation/docs/category/tutorials"}},a={},u=[];function l(e){const t={a:"a",h1:"h1",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"collective-offers",children:"Collective offers"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Collectives offers"})," are ",(0,o.jsx)(t.strong,{children:"events maint for scholar groupes"}),". They can be managed using the ",(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.a,{href:"/rest-api#tag/Collective-offers",children:"collective offers endpoints"})}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var o=n(6540);const r={},s=o.createContext(r);function i(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/32021847.5815fb95.js b/assets/js/32021847.5815fb95.js new file mode 100644 index 0000000..f5f3591 --- /dev/null +++ b/assets/js/32021847.5815fb95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[718],{3545:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var a=n(4848),o=n(8453);const r={sidebar_position:2},i="Create an educational event",s={id:"tutorials/create-a-educational-event",title:"Create an educational event",description:"TO DO !",source:"@site/docs/tutorials/create-a-educational-event.md",sourceDirName:"tutorials",slug:"/tutorials/create-a-educational-event",permalink:"/docs/tutorials/create-a-educational-event",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Create an event with an external ticketing system",permalink:"/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems"},next:{title:"Create a book or CD product (using EAN)",permalink:"/docs/tutorials/create-a-book-or-cd-product"}},c={},u=[];function d(e){const t={h1:"h1",p:"p",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"create-an-educational-event",children:"Create an educational event"}),"\n",(0,a.jsx)(t.p,{children:"TO DO !"})]})}function l(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>s});var a=n(6540);const o={},r=a.createContext(o);function i(e){const t=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),a.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/32021847.cfe23465.js b/assets/js/32021847.cfe23465.js deleted file mode 100644 index 84ca8c3..0000000 --- a/assets/js/32021847.cfe23465.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[718],{3545:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var a=n(4848),o=n(8453);const r={sidebar_position:2},i="Create an educational event",s={id:"tutorials/create-a-educational-event",title:"Create an educational event",description:"TO DO !",source:"@site/docs/tutorials/create-a-educational-event.md",sourceDirName:"tutorials",slug:"/tutorials/create-a-educational-event",permalink:"/pass-culture-api-documentation/docs/tutorials/create-a-educational-event",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Create an event with an external ticketing system",permalink:"/pass-culture-api-documentation/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems"},next:{title:"Create a book or CD product (using EAN)",permalink:"/pass-culture-api-documentation/docs/tutorials/create-a-book-or-cd-product"}},c={},u=[];function d(t){const e={h1:"h1",p:"p",...(0,o.R)(),...t.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e.h1,{id:"create-an-educational-event",children:"Create an educational event"}),"\n",(0,a.jsx)(e.p,{children:"TO DO !"})]})}function l(t={}){const{wrapper:e}={...(0,o.R)(),...t.components};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(d,{...t})}):d(t)}},8453:(t,e,n)=>{n.d(e,{R:()=>i,x:()=>s});var a=n(6540);const o={},r=a.createContext(o);function i(t){const e=a.useContext(r);return a.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:i(t.components),a.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ce95d5e.5a054a77.js b/assets/js/3ce95d5e.5a054a77.js new file mode 100644 index 0000000..2331268 --- /dev/null +++ b/assets/js/3ce95d5e.5a054a77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[218],{1903:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var n=o(4848),r=o(8453);const s={sidebar_position:1,title:"Request a provider account",description:"How to get the necessary accesses to the pass Culture REST API"},i="Request a provider account",a={id:"mandatory-steps/request-a-provider-account",title:"Request a provider account",description:"How to get the necessary accesses to the pass Culture REST API",source:"@site/docs/mandatory-steps/request-a-provider-account.md",sourceDirName:"mandatory-steps",slug:"/mandatory-steps/request-a-provider-account",permalink:"/docs/mandatory-steps/request-a-provider-account",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Request a provider account",description:"How to get the necessary accesses to the pass Culture REST API"},sidebar:"tutorialSidebar",previous:{title:"Mandatory steps",permalink:"/docs/category/mandatory-steps"},next:{title:"Create test accounts",permalink:"/docs/mandatory-steps/create-test-accounts"}},c={},d=[{value:"Mandatory accesses to use our API",id:"mandatory-accesses-to-use-our-api",level:2},{value:"How to get a provider account",id:"how-to-get-a-provider-account",level:2}];function u(e){const t={a:"a",admonition:"admonition",em:"em",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"request-a-provider-account",children:"Request a provider account"}),"\n",(0,n.jsx)(t.h2,{id:"mandatory-accesses-to-use-our-api",children:"Mandatory accesses to use our API"}),"\n",(0,n.jsxs)(t.p,{children:["To be able to use our ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"/rest-api/",children:"REST API"})}),", you need two things:"]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["to have a ",(0,n.jsxs)(t.strong,{children:["provider account with its ",(0,n.jsx)(t.em,{children:"API key"})," (for authentication)"]})]}),"\n",(0,n.jsxs)(t.li,{children:["to have ",(0,n.jsx)(t.strong,{children:"your provider account linked to the venues"})," for which you are supposed to manage offers, products and/or events ",(0,n.jsx)(t.strong,{children:"(for authorization)"})]}),"\n"]}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["For more information on ",(0,n.jsx)(t.strong,{children:"how authentication and authorization work on our API"}),", please take a look at ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"/docs/understanding-our-api/authentication-authorization",children:"this documentation page"})}),"."]})}),"\n",(0,n.jsx)(t.h2,{id:"how-to-get-a-provider-account",children:"How to get a provider account"}),"\n",(0,n.jsxs)(t.p,{children:["Getting your provider account in production is a ",(0,n.jsx)(t.strong,{children:"4 steps process"}),":"]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["First, you need to ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"https://passculture.typeform.com/to/JHmbK9Hg",children:"fill this form"})}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["Then, our support team ",(0,n.jsxs)(t.strong,{children:["creates your provider account on our ",(0,n.jsx)(t.em,{children:"integration test environment"})]})," and ",(0,n.jsx)(t.strong,{children:"provides you with the API key"})," to authenticate yourself on this environment."]}),"\n",(0,n.jsxs)(t.li,{children:["You develop your integration using this ",(0,n.jsx)(t.strong,{children:"integration test environment"}),". At this step you need to ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"/docs/mandatory-steps/create-test-accounts",children:"create test accounts"})})," to be able to test that your integration is properly working."]}),"\n",(0,n.jsxs)(t.li,{children:["Once your integration is working properly on the integration test environment, our support team ",(0,n.jsx)(t.strong,{children:"creates your provider account on our production environment"})," and ",(0,n.jsx)(t.strong,{children:"gives you your production API key"}),". You will then be ",(0,n.jsx)(t.strong,{children:"ready to deploy your integration in production \ud83d\ude80"}),"."]}),"\n"]})]})}function l(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},8453:(e,t,o)=>{o.d(t,{R:()=>i,x:()=>a});var n=o(6540);const r={},s=n.createContext(r);function i(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3ce95d5e.98b894ce.js b/assets/js/3ce95d5e.98b894ce.js deleted file mode 100644 index a4e01c8..0000000 --- a/assets/js/3ce95d5e.98b894ce.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[218],{1903:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>u});var n=o(4848),r=o(8453);const s={sidebar_position:1,title:"Request a provider account",description:"How to get the necessary accesses to the pass Culture REST API"},i="Request a provider account",a={id:"mandatory-steps/request-a-provider-account",title:"Request a provider account",description:"How to get the necessary accesses to the pass Culture REST API",source:"@site/docs/mandatory-steps/request-a-provider-account.md",sourceDirName:"mandatory-steps",slug:"/mandatory-steps/request-a-provider-account",permalink:"/pass-culture-api-documentation/docs/mandatory-steps/request-a-provider-account",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Request a provider account",description:"How to get the necessary accesses to the pass Culture REST API"},sidebar:"tutorialSidebar",previous:{title:"Mandatory steps",permalink:"/pass-culture-api-documentation/docs/category/mandatory-steps"},next:{title:"Create test accounts",permalink:"/pass-culture-api-documentation/docs/mandatory-steps/create-test-accounts"}},c={},u=[{value:"Mandatory accesses to use our API",id:"mandatory-accesses-to-use-our-api",level:2},{value:"How to get a provider account",id:"how-to-get-a-provider-account",level:2}];function d(e){const t={a:"a",admonition:"admonition",em:"em",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"request-a-provider-account",children:"Request a provider account"}),"\n",(0,n.jsx)(t.h2,{id:"mandatory-accesses-to-use-our-api",children:"Mandatory accesses to use our API"}),"\n",(0,n.jsxs)(t.p,{children:["To be able to use our ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"/rest-api/",children:"REST API"})}),", you need two things:"]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["to have a ",(0,n.jsxs)(t.strong,{children:["provider account with its ",(0,n.jsx)(t.em,{children:"API key"})," (for authentication)"]})]}),"\n",(0,n.jsxs)(t.li,{children:["to have ",(0,n.jsx)(t.strong,{children:"your provider account linked to the venues"})," for which you are supposed to manage offers, products and/or events ",(0,n.jsx)(t.strong,{children:"(for authorization)"})]}),"\n"]}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["For more information on ",(0,n.jsx)(t.strong,{children:"how authentication and authorization work on our API"}),", please take a look at ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"/docs/understanding-our-api/authentication-authorization",children:"this documentation page"})}),"."]})}),"\n",(0,n.jsx)(t.h2,{id:"how-to-get-a-provider-account",children:"How to get a provider account"}),"\n",(0,n.jsxs)(t.p,{children:["Getting your provider account in production is a ",(0,n.jsx)(t.strong,{children:"4 steps process"}),":"]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["First, you need to ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"https://passculture.typeform.com/to/JHmbK9Hg",children:"fill this form"})}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["Then, our support team ",(0,n.jsxs)(t.strong,{children:["creates your provider account on our ",(0,n.jsx)(t.em,{children:"integration test environment"})]})," and ",(0,n.jsx)(t.strong,{children:"provides you with the API key"})," to authenticate yourself on this environment."]}),"\n",(0,n.jsxs)(t.li,{children:["You develop your integration using this ",(0,n.jsx)(t.strong,{children:"integration test environment"}),". At this step you need to ",(0,n.jsx)(t.strong,{children:(0,n.jsx)(t.a,{href:"/docs/mandatory-steps/create-test-accounts",children:"create test accounts"})})," to be able to test that your integration is properly working."]}),"\n",(0,n.jsxs)(t.li,{children:["Once your integration is working properly on the integration test environment, our support team ",(0,n.jsx)(t.strong,{children:"creates your provider account on our production environment"})," and ",(0,n.jsx)(t.strong,{children:"gives you your production API key"}),". You will then be ",(0,n.jsx)(t.strong,{children:"ready to deploy your integration in production \ud83d\ude80"}),"."]}),"\n"]})]})}function l(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,t,o)=>{o.d(t,{R:()=>i,x:()=>a});var n=o(6540);const r={},s=n.createContext(r);function i(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/402f1feb.a3413f09.js b/assets/js/402f1feb.a3413f09.js deleted file mode 100644 index 573ee7f..0000000 --- a/assets/js/402f1feb.a3413f09.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[947],{1818:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>a});var s=r(4848),i=r(8453);const t={sidebar_position:1},o="Individual offers",d={id:"understanding-our-api/resources/individual-offers",title:"Individual offers",description:"Indivual offers are offers meant for individual teenager. They are split in two main categories : products and events.",source:"@site/docs/understanding-our-api/resources/individual-offers.md",sourceDirName:"understanding-our-api/resources",slug:"/understanding-our-api/resources/individual-offers",permalink:"/pass-culture-api-documentation/docs/understanding-our-api/resources/individual-offers",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"API Resources",permalink:"/pass-culture-api-documentation/docs/category/api-resources"},next:{title:"Collective offers",permalink:"/pass-culture-api-documentation/docs/understanding-our-api/resources/collective-offers"}},c={},a=[{value:"\ud83d\udcda Products",id:"-products",level:2},{value:"General description",id:"general-description",level:3},{value:"Creation rules",id:"creation-rules",level:3},{value:"Update rule",id:"update-rule",level:3},{value:"Concurrent access rules: Pro interface users vs. API users",id:"concurrent-access-rules-pro-interface-users-vs-api-users",level:3},{value:"Case #1: the product offer has been created via API",id:"case-1-the-product-offer-has-been-created-via-api",level:4},{value:"Case #2: the product offer has been created on the pro interface",id:"case-2-the-product-offer-has-been-created-on-the-pro-interface",level:4},{value:"\ud83c\udfad Events",id:"-events",level:2},{value:"General description",id:"general-description-1",level:3},{value:"Creation rules",id:"creation-rules-1",level:3},{value:"\u26a1\ufe0f Bookings",id:"\ufe0f-bookings",level:2},{value:"General description",id:"general-description-2",level:3},{value:"Booking for products",id:"booking-for-products",level:3},{value:"Booking for events",id:"booking-for-events",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"individual-offers",children:"Individual offers"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Indivual offers"})," are offers ",(0,s.jsx)(n.strong,{children:"meant for individual teenager"}),". They are split in two main categories : ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"products"})})," and ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"events"})}),"."]}),"\n",(0,s.jsxs)(n.h2,{id:"-products",children:["\ud83d\udcda ",(0,s.jsx)(n.code,{children:"Products"})]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To manage those offers you will be mainly using the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer",children:"product offers endpoints"})}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"general-description",children:"General description"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"Products"})})," are cultural goods that are not linked to a date. They can be :"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"physical"})," : ",(0,s.jsx)(n.em,{children:"for instance a book or or a CD"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"digital"})," : ",(0,s.jsx)(n.em,{children:"for instance a subscription to a music streaming service"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"creation-rules",children:"Creation rules"}),"\n",(0,s.jsxs)(n.p,{children:["There are ",(0,s.jsx)(n.strong,{children:"two methods to create a product offer"})," using the pass Culture API :"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"if your product is a book, a CD or a Vinyl"}),", you must create your product offer by indicating an ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/International_Article_Number",children:"European Article Numbering code (EAN)"})}),", a price and a quantity. We will fill the other offer fields using external databases (provided by our partner Titelive). The dedicated endpoint to create product using EANs is ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer-bulk-operations/operation/PostProductOfferByEan",children:"this one"})}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"for others products"}),", you create your product offer by providing all the data. The dedicated endpoint for this kind of creation is ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer/operation/PostProductOffer",children:"this one"})}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.admonition,{type:"info",children:[(0,s.jsxs)(n.p,{children:["To be able to create a product offer using an EAN code, ",(0,s.jsx)(n.strong,{children:"this EAN code must exists in the pass Culture database"}),"."]}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"It should not be an issue in production"}),", since we are using a professional service to get EAN codes. In the test in the integration test environment however, we have only a few EAN codes available."]}),(0,s.jsxs)(n.p,{children:["Here is a ",(0,s.jsx)(n.strong,{children:"list of EAN codes available in the integration test environment"}),":"]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"EAN codes that correspond to physical books:"})," 9782871429944, 9780500651209, 9782706715051, 9782706715051, 9782897511135, 9782842650391, 9782842650391, 9782020024280"]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"EAN codes that correspond to CDs or Vinyls:"})}),"\n"]}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"EAN"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Unavailable CD"}),(0,s.jsx)(n.td,{children:"0602438073177"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Soon to be released CD"}),(0,s.jsx)(n.td,{children:"0602435858395"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French Hip-hop CD"}),(0,s.jsx)(n.td,{children:"3700187679323"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Pop Vinyl"}),(0,s.jsx)(n.td,{children:"0190296666964"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs CD"}),(0,s.jsx)(n.td,{children:"0196587966423"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs Vinyl"}),(0,s.jsx)(n.td,{children:"0196587630317"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French Rap / Hip Hop CD"}),(0,s.jsx)(n.td,{children:"3596974281424"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Pop Vinyl"}),(0,s.jsx)(n.td,{children:"5054197199738"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs CD"}),(0,s.jsx)(n.td,{children:"0602448125309"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs Vinyl"}),(0,s.jsx)(n.td,{children:"3700187680923"})]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"update-rule",children:"Update rule"}),"\n",(0,s.jsxs)(n.p,{children:["Regardless of the method used to create your product offer, you can update a product offer using ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer/operation/EditProduct",children:"this endpoint"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"concurrent-access-rules-pro-interface-users-vs-api-users",children:"Concurrent access rules: Pro interface users vs. API users"}),"\n",(0,s.jsxs)(n.p,{children:["It can happen that the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"venue"})})," is managed both ",(0,s.jsx)(n.strong,{children:"via API"})," and ",(0,s.jsx)(n.strong,{children:"by a human user using the pro interface"}),".\nIn this case, according to whom has created the offer, the API user or the Pro interface user might be limited to a certain set of actions on the offer."]}),"\n",(0,s.jsx)(n.h4,{id:"case-1-the-product-offer-has-been-created-via-api",children:"Case #1: the product offer has been created via API"}),"\n",(0,s.jsx)(n.p,{children:"If a product offer has been created using the API, it is visible on the Pro interface, however, the human user is only allowed to perform a limited set of actions on the offer :"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Deactivate/active the offer"}),"\n",(0,s.jsx)(n.li,{children:"Update the accessibility conditions"}),"\n",(0,s.jsx)(n.li,{children:"Update the public link"}),"\n",(0,s.jsx)(n.li,{children:"Delete the stock (this will delete the bookings linked to this stock)"}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"case-2-the-product-offer-has-been-created-on-the-pro-interface",children:"Case #2: the product offer has been created on the pro interface"}),"\n",(0,s.jsx)(n.p,{children:"If a product offer has been created by a user on the pro interface, then it is not possible to modify it by API. The only available action by API is : active/deactivate the offer."}),"\n",(0,s.jsxs)(n.h2,{id:"-events",children:["\ud83c\udfad ",(0,s.jsx)(n.code,{children:"Events"})]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To manage those offers you will be mainly using the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer",children:"event offers endpoints"})}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"general-description-1",children:"General description"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"Events"})," are ",(0,s.jsx)(n.strong,{children:"cultural goods whose stocks are linked to a date and a price category"}),"."]}),"\n",(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:'For instance, an event can be "Le Bourgeois gentilhomme" at la Com\xe9die Fran\xe7aise.'}),(0,s.jsx)(n.p,{children:'This play can have several performances and for each performance they can be several price categories ("Carr\xe9 or", "Cat\xe9gorie 1"...).'}),(0,s.jsxs)(n.p,{children:["Therefore, you will have ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"(number of performances)*(number of categories)"})})," stocks linked to this event."]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"Events"})," can be :"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"physical:"})," ",(0,s.jsx)(n.em,{children:"for instance a concert or a theater performance"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"digital:"})," ",(0,s.jsx)(n.em,{children:"for instance a online painting lesson"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"creation-rules-1",children:"Creation rules"}),"\n",(0,s.jsxs)(n.p,{children:["Creating a ",(0,s.jsx)(n.code,{children:"event"})," offer with its stocks is a three steps process.\nYou will need to first ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer/operation/PostEventOffer",children:"create the event"})}),", then to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer-prices/operation/PostEventPriceCategories",children:"create its price categories"})})," and finally to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer-dates/operation/PostEventDates",children:"create its dates"})}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Here are the rules you should be aware of when creating an event:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["the ",(0,s.jsx)(n.strong,{children:"number of price categories for an event"})," is limited to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"10"})})]}),"\n",(0,s.jsxs)(n.li,{children:["the ",(0,s.jsx)(n.strong,{children:"number of dates for an event"})," is limited to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"10 000"})})]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"\ufe0f-bookings",children:["\u26a1\ufe0f ",(0,s.jsx)(n.code,{children:"Bookings"})]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To manage those offers you will be using the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Booking",children:"bookings endpoints"})}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"general-description-2",children:"General description"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a resource shared by ",(0,s.jsxs)(n.strong,{children:[(0,s.jsx)(n.code,{children:"event"})," and ",(0,s.jsx)(n.code,{children:"product"})," offers"]}),".\nA ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a reservation made by a teenager of a product or of an event date."]}),"\n",(0,s.jsxs)(n.h3,{id:"booking-for-products",children:[(0,s.jsx)(n.code,{children:"Booking"})," for ",(0,s.jsx)(n.code,{children:"products"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsxs)(n.strong,{children:["For a ",(0,s.jsx)(n.code,{children:"product"})]}),", the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a ",(0,s.jsx)(n.strong,{children:"\ud83e\ude99 countermark"}),". This ",(0,s.jsx)(n.strong,{children:"countermark"})," will be used by the teenager either:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"in the case of a physical product"}),", to retrieve its order in the offerer shop."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsxs)(n.em,{children:["For instance, if you are developping a stock management systems for bookshops, the seller will validate the teenager order by inputing the countermark in your software. Your software will then make a call to our ",(0,s.jsx)(n.a,{href:"/rest-api/#tag/Booking/operation/ValidateBookingByToken",children:"booking validation endpoint"})]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"in the case of a digital product"}),", to retrieve its order on the offerer website."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsxs)(n.em,{children:["For instance, if you are a music streaming service, the teenager will validate its order by inputing the countermark in one of the field of the offer webiste form. On the form submission, your website will make a call to our ",(0,s.jsx)(n.a,{href:"/rest-api/#tag/Booking/operation/ValidateBookingByToken",children:"booking validation endpoint"})]}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"booking-for-events",children:[(0,s.jsx)(n.code,{children:"Booking"})," for ",(0,s.jsx)(n.code,{children:"events"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsxs)(n.strong,{children:["For an ",(0,s.jsx)(n.code,{children:"event"})]}),", the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a ",(0,s.jsx)(n.strong,{children:"\ud83d\udcc5 reservation"})," for the event."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"It can be linked to a ticket"})," if you plugged your ticketing solution to the pass Culture application"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"it can be a countermark"}),", if you chose to make the teenagers retrieve their tickets at the event venue."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>d});var s=r(6540);const i={},t=s.createContext(i);function o(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/402f1feb.be39e6bf.js b/assets/js/402f1feb.be39e6bf.js new file mode 100644 index 0000000..bfc6ff0 --- /dev/null +++ b/assets/js/402f1feb.be39e6bf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[947],{1818:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>a});var s=r(4848),i=r(8453);const t={sidebar_position:1},o="Individual offers",d={id:"understanding-our-api/resources/individual-offers",title:"Individual offers",description:"Indivual offers are offers meant for individual teenager. They are split in two main categories : products and events.",source:"@site/docs/understanding-our-api/resources/individual-offers.md",sourceDirName:"understanding-our-api/resources",slug:"/understanding-our-api/resources/individual-offers",permalink:"/docs/understanding-our-api/resources/individual-offers",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"API Resources",permalink:"/docs/category/api-resources"},next:{title:"Collective offers",permalink:"/docs/understanding-our-api/resources/collective-offers"}},c={},a=[{value:"\ud83d\udcda Products",id:"-products",level:2},{value:"General description",id:"general-description",level:3},{value:"Creation rules",id:"creation-rules",level:3},{value:"Update rule",id:"update-rule",level:3},{value:"Concurrent access rules: Pro interface users vs. API users",id:"concurrent-access-rules-pro-interface-users-vs-api-users",level:3},{value:"Case #1: the product offer has been created via API",id:"case-1-the-product-offer-has-been-created-via-api",level:4},{value:"Case #2: the product offer has been created on the pro interface",id:"case-2-the-product-offer-has-been-created-on-the-pro-interface",level:4},{value:"\ud83c\udfad Events",id:"-events",level:2},{value:"General description",id:"general-description-1",level:3},{value:"Creation rules",id:"creation-rules-1",level:3},{value:"\u26a1\ufe0f Bookings",id:"\ufe0f-bookings",level:2},{value:"General description",id:"general-description-2",level:3},{value:"Booking for products",id:"booking-for-products",level:3},{value:"Booking for events",id:"booking-for-events",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"individual-offers",children:"Individual offers"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Indivual offers"})," are offers ",(0,s.jsx)(n.strong,{children:"meant for individual teenager"}),". They are split in two main categories : ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"products"})})," and ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"events"})}),"."]}),"\n",(0,s.jsxs)(n.h2,{id:"-products",children:["\ud83d\udcda ",(0,s.jsx)(n.code,{children:"Products"})]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To manage those offers you will be mainly using the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer",children:"product offers endpoints"})}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"general-description",children:"General description"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"Products"})})," are cultural goods that are not linked to a date. They can be :"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"physical"})," : ",(0,s.jsx)(n.em,{children:"for instance a book or or a CD"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"digital"})," : ",(0,s.jsx)(n.em,{children:"for instance a subscription to a music streaming service"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"creation-rules",children:"Creation rules"}),"\n",(0,s.jsxs)(n.p,{children:["There are ",(0,s.jsx)(n.strong,{children:"two methods to create a product offer"})," using the pass Culture API :"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"if your product is a book, a CD or a Vinyl"}),", you must create your product offer by indicating an ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/International_Article_Number",children:"European Article Numbering code (EAN)"})}),", a price and a quantity. We will fill the other offer fields using external databases (provided by our partner Titelive). The dedicated endpoint to create product using EANs is ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer-bulk-operations/operation/PostProductOfferByEan",children:"this one"})}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"for others products"}),", you create your product offer by providing all the data. The dedicated endpoint for this kind of creation is ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer/operation/PostProductOffer",children:"this one"})}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.admonition,{type:"info",children:[(0,s.jsxs)(n.p,{children:["To be able to create a product offer using an EAN code, ",(0,s.jsx)(n.strong,{children:"this EAN code must exists in the pass Culture database"}),"."]}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"It should not be an issue in production"}),", since we are using a professional service to get EAN codes. In the test in the integration test environment however, we have only a few EAN codes available."]}),(0,s.jsxs)(n.p,{children:["Here is a ",(0,s.jsx)(n.strong,{children:"list of EAN codes available in the integration test environment"}),":"]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"EAN codes that correspond to physical books:"})," 9782871429944, 9780500651209, 9782706715051, 9782706715051, 9782897511135, 9782842650391, 9782842650391, 9782020024280"]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"EAN codes that correspond to CDs or Vinyls:"})}),"\n"]}),(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"EAN"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Unavailable CD"}),(0,s.jsx)(n.td,{children:"0602438073177"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Soon to be released CD"}),(0,s.jsx)(n.td,{children:"0602435858395"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French Hip-hop CD"}),(0,s.jsx)(n.td,{children:"3700187679323"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Pop Vinyl"}),(0,s.jsx)(n.td,{children:"0190296666964"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs CD"}),(0,s.jsx)(n.td,{children:"0196587966423"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs Vinyl"}),(0,s.jsx)(n.td,{children:"0196587630317"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French Rap / Hip Hop CD"}),(0,s.jsx)(n.td,{children:"3596974281424"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Pop Vinyl"}),(0,s.jsx)(n.td,{children:"5054197199738"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs CD"}),(0,s.jsx)(n.td,{children:"0602448125309"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"French songs Vinyl"}),(0,s.jsx)(n.td,{children:"3700187680923"})]})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"update-rule",children:"Update rule"}),"\n",(0,s.jsxs)(n.p,{children:["Regardless of the method used to create your product offer, you can update a product offer using ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Product-offer/operation/EditProduct",children:"this endpoint"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"concurrent-access-rules-pro-interface-users-vs-api-users",children:"Concurrent access rules: Pro interface users vs. API users"}),"\n",(0,s.jsxs)(n.p,{children:["It can happen that the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"venue"})})," is managed both ",(0,s.jsx)(n.strong,{children:"via API"})," and ",(0,s.jsx)(n.strong,{children:"by a human user using the pro interface"}),".\nIn this case, according to whom has created the offer, the API user or the Pro interface user might be limited to a certain set of actions on the offer."]}),"\n",(0,s.jsx)(n.h4,{id:"case-1-the-product-offer-has-been-created-via-api",children:"Case #1: the product offer has been created via API"}),"\n",(0,s.jsx)(n.p,{children:"If a product offer has been created using the API, it is visible on the Pro interface, however, the human user is only allowed to perform a limited set of actions on the offer :"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Deactivate/active the offer"}),"\n",(0,s.jsx)(n.li,{children:"Update the accessibility conditions"}),"\n",(0,s.jsx)(n.li,{children:"Update the public link"}),"\n",(0,s.jsx)(n.li,{children:"Delete the stock (this will delete the bookings linked to this stock)"}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"case-2-the-product-offer-has-been-created-on-the-pro-interface",children:"Case #2: the product offer has been created on the pro interface"}),"\n",(0,s.jsx)(n.p,{children:"If a product offer has been created by a user on the pro interface, then it is not possible to modify it by API. The only available action by API is : active/deactivate the offer."}),"\n",(0,s.jsxs)(n.h2,{id:"-events",children:["\ud83c\udfad ",(0,s.jsx)(n.code,{children:"Events"})]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To manage those offers you will be mainly using the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer",children:"event offers endpoints"})}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"general-description-1",children:"General description"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"Events"})," are ",(0,s.jsx)(n.strong,{children:"cultural goods whose stocks are linked to a date and a price category"}),"."]}),"\n",(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsx)(n.p,{children:'For instance, an event can be "Le Bourgeois gentilhomme" at la Com\xe9die Fran\xe7aise.'}),(0,s.jsx)(n.p,{children:'This play can have several performances and for each performance they can be several price categories ("Carr\xe9 or", "Cat\xe9gorie 1"...).'}),(0,s.jsxs)(n.p,{children:["Therefore, you will have ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"(number of performances)*(number of categories)"})})," stocks linked to this event."]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"Events"})," can be :"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"physical:"})," ",(0,s.jsx)(n.em,{children:"for instance a concert or a theater performance"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"digital:"})," ",(0,s.jsx)(n.em,{children:"for instance a online painting lesson"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"creation-rules-1",children:"Creation rules"}),"\n",(0,s.jsxs)(n.p,{children:["Creating a ",(0,s.jsx)(n.code,{children:"event"})," offer with its stocks is a three steps process.\nYou will need to first ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer/operation/PostEventOffer",children:"create the event"})}),", then to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer-prices/operation/PostEventPriceCategories",children:"create its price categories"})})," and finally to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Event-offer-dates/operation/PostEventDates",children:"create its dates"})}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Here are the rules you should be aware of when creating an event:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["the ",(0,s.jsx)(n.strong,{children:"number of price categories for an event"})," is limited to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"10"})})]}),"\n",(0,s.jsxs)(n.li,{children:["the ",(0,s.jsx)(n.strong,{children:"number of dates for an event"})," is limited to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"10 000"})})]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"\ufe0f-bookings",children:["\u26a1\ufe0f ",(0,s.jsx)(n.code,{children:"Bookings"})]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["To manage those offers you will be using the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/rest-api/#tag/Booking",children:"bookings endpoints"})}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"general-description-2",children:"General description"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a resource shared by ",(0,s.jsxs)(n.strong,{children:[(0,s.jsx)(n.code,{children:"event"})," and ",(0,s.jsx)(n.code,{children:"product"})," offers"]}),".\nA ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a reservation made by a teenager of a product or of an event date."]}),"\n",(0,s.jsxs)(n.h3,{id:"booking-for-products",children:[(0,s.jsx)(n.code,{children:"Booking"})," for ",(0,s.jsx)(n.code,{children:"products"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsxs)(n.strong,{children:["For a ",(0,s.jsx)(n.code,{children:"product"})]}),", the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a ",(0,s.jsx)(n.strong,{children:"\ud83e\ude99 countermark"}),". This ",(0,s.jsx)(n.strong,{children:"countermark"})," will be used by the teenager either:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"in the case of a physical product"}),", to retrieve its order in the offerer shop."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsxs)(n.em,{children:["For instance, if you are developping a stock management systems for bookshops, the seller will validate the teenager order by inputing the countermark in your software. Your software will then make a call to our ",(0,s.jsx)(n.a,{href:"/rest-api/#tag/Booking/operation/ValidateBookingByToken",children:"booking validation endpoint"})]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"in the case of a digital product"}),", to retrieve its order on the offerer website."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsxs)(n.em,{children:["For instance, if you are a music streaming service, the teenager will validate its order by inputing the countermark in one of the field of the offer webiste form. On the form submission, your website will make a call to our ",(0,s.jsx)(n.a,{href:"/rest-api/#tag/Booking/operation/ValidateBookingByToken",children:"booking validation endpoint"})]}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"booking-for-events",children:[(0,s.jsx)(n.code,{children:"Booking"})," for ",(0,s.jsx)(n.code,{children:"events"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsxs)(n.strong,{children:["For an ",(0,s.jsx)(n.code,{children:"event"})]}),", the ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"booking"})})," is a ",(0,s.jsx)(n.strong,{children:"\ud83d\udcc5 reservation"})," for the event."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"It can be linked to a ticket"})," if you plugged your ticketing solution to the pass Culture application"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"it can be a countermark"}),", if you chose to make the teenagers retrieve their tickets at the event venue."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>d});var s=r(6540);const i={},t=s.createContext(i);function o(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/418d0c89.d6ea7c58.js b/assets/js/418d0c89.d6ea7c58.js new file mode 100644 index 0000000..dbb33ef --- /dev/null +++ b/assets/js/418d0c89.d6ea7c58.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[940],{9061:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Mandatory steps","description":"All the steps you need to complete before being able to use the pass Culture API.","slug":"/category/mandatory-steps","permalink":"/docs/category/mandatory-steps","sidebar":"tutorialSidebar","navigation":{"next":{"title":"Request a provider account","permalink":"/docs/mandatory-steps/request-a-provider-account"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/5b7a494c.773459e0.js b/assets/js/5b7a494c.773459e0.js new file mode 100644 index 0000000..9ac24b1 --- /dev/null +++ b/assets/js/5b7a494c.773459e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[944],{9845:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>s,contentTitle:()=>c,default:()=>p,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var r=e(4848),a=e(8453);const n={sidebar_position:3},c="Create a product (other than book or CD)",i={id:"tutorials/create-a-product-other-than-book",title:"Create a product (other than book or CD)",description:"To create a book or CD product you must use EAN (see how to create a product)",source:"@site/docs/tutorials/create-a-product-other-than-book.md",sourceDirName:"tutorials",slug:"/tutorials/create-a-product-other-than-book",permalink:"/docs/tutorials/create-a-product-other-than-book",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Create a book or CD product (using EAN)",permalink:"/docs/tutorials/create-a-book-or-cd-product"},next:{title:"Validate a booking",permalink:"/docs/tutorials/validate-a-booking"}},s={},u=[];function d(t){const o={a:"a",admonition:"admonition",h1:"h1",p:"p",...(0,a.R)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.h1,{id:"create-a-product-other-than-book-or-cd",children:"Create a product (other than book or CD)"}),"\n",(0,r.jsx)(o.admonition,{type:"warning",children:(0,r.jsxs)(o.p,{children:["To create a book or CD product you must use EAN (",(0,r.jsx)(o.a,{href:"/docs/tutorials/create-a-book-or-cd-product",children:"see how to create a product"}),")"]})})]})}function p(t={}){const{wrapper:o}={...(0,a.R)(),...t.components};return o?(0,r.jsx)(o,{...t,children:(0,r.jsx)(d,{...t})}):d(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>c,x:()=>i});var r=e(6540);const a={},n=r.createContext(a);function c(t){const o=r.useContext(n);return r.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function i(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:c(t.components),r.createElement(n.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/5b7a494c.7d71e465.js b/assets/js/5b7a494c.7d71e465.js deleted file mode 100644 index cb9fbc7..0000000 --- a/assets/js/5b7a494c.7d71e465.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[944],{9845:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>s,contentTitle:()=>c,default:()=>p,frontMatter:()=>n,metadata:()=>i,toc:()=>u});var r=e(4848),a=e(8453);const n={sidebar_position:3},c="Create a product (other than book or CD)",i={id:"tutorials/create-a-product-other-than-book",title:"Create a product (other than book or CD)",description:"To create a book or CD product you must use EAN (see how to create a product)",source:"@site/docs/tutorials/create-a-product-other-than-book.md",sourceDirName:"tutorials",slug:"/tutorials/create-a-product-other-than-book",permalink:"/pass-culture-api-documentation/docs/tutorials/create-a-product-other-than-book",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Create a book or CD product (using EAN)",permalink:"/pass-culture-api-documentation/docs/tutorials/create-a-book-or-cd-product"},next:{title:"Validate a booking",permalink:"/pass-culture-api-documentation/docs/tutorials/validate-a-booking"}},s={},u=[];function d(t){const o={a:"a",admonition:"admonition",h1:"h1",p:"p",...(0,a.R)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.h1,{id:"create-a-product-other-than-book-or-cd",children:"Create a product (other than book or CD)"}),"\n",(0,r.jsx)(o.admonition,{type:"warning",children:(0,r.jsxs)(o.p,{children:["To create a book or CD product you must use EAN (",(0,r.jsx)(o.a,{href:"/docs/tutorials/create-a-book-or-cd-product",children:"see how to create a product"}),")"]})})]})}function p(t={}){const{wrapper:o}={...(0,a.R)(),...t.components};return o?(0,r.jsx)(o,{...t,children:(0,r.jsx)(d,{...t})}):d(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>c,x:()=>i});var r=e(6540);const a={},n=r.createContext(a);function c(t){const o=r.useContext(n);return r.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function i(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:c(t.components),r.createElement(n.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/647824ea.389dc065.js b/assets/js/647824ea.389dc065.js deleted file mode 100644 index a0a0291..0000000 --- a/assets/js/647824ea.389dc065.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[376],{9951:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Tutorials","description":"Tutorials explaining how to perform usual tasks with our API.","slug":"/category/tutorials","permalink":"/pass-culture-api-documentation/docs/category/tutorials","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Collective offers","permalink":"/pass-culture-api-documentation/docs/understanding-our-api/resources/collective-offers"},"next":{"title":"Create an event with an external ticketing system","permalink":"/pass-culture-api-documentation/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/75bfd58e.05d1819c.js b/assets/js/75bfd58e.05d1819c.js new file mode 100644 index 0000000..20cc5bc --- /dev/null +++ b/assets/js/75bfd58e.05d1819c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[227],{9501:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var t=r(4848),i=r(8453);const s={sidebar_position:1,description:"How authentication and authorization work"},o="Authentication & Authorization",a={id:"understanding-our-api/authentication-authorization",title:"Authentication & Authorization",description:"How authentication and authorization work",source:"@site/docs/understanding-our-api/authentication-authorization.md",sourceDirName:"understanding-our-api",slug:"/understanding-our-api/authentication-authorization",permalink:"/docs/understanding-our-api/authentication-authorization",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,description:"How authentication and authorization work"},sidebar:"tutorialSidebar",previous:{title:"Understanding our API",permalink:"/docs/category/understanding-our-api"},next:{title:"API Resources",permalink:"/docs/category/api-resources"}},c={},d=[{value:"Users",id:"users",level:2},{value:"Non technical users: teenagers and offerers",id:"non-technical-users-teenagers-and-offerers",level:3},{value:"Technical users: providers",id:"technical-users-providers",level:3},{value:"Authentication",id:"authentication",level:2},{value:"Prerequisite : Getting your API keys",id:"prerequisite--getting-your-api-keys",level:3},{value:"Authenticating your requests with your API key",id:"authenticating-your-requests-with-your-api-key",level:3},{value:"Authorization",id:"authorization",level:2},{value:"Understanding the key resources: Offerers and Venues",id:"understanding-the-key-resources-offerers-and-venues",level:3},{value:"Gaining access to a venue",id:"gaining-access-to-a-venue",level:3},{value:"Authorization errors",id:"authorization-errors",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"authentication--authorization",children:"Authentication & Authorization"}),"\n",(0,t.jsx)(n.h2,{id:"users",children:"Users"}),"\n",(0,t.jsx)(n.h3,{id:"non-technical-users-teenagers-and-offerers",children:"Non technical users: teenagers and offerers"}),"\n",(0,t.jsx)(n.p,{children:"There are two main users of the pass Culture application :"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["the ",(0,t.jsx)(n.strong,{children:"teenagers"})," who are using their credit to buy cultural offers through the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://passculture.app/accueil",children:"web application"})})," or the ",(0,t.jsx)(n.strong,{children:"mobile application"})]}),"\n",(0,t.jsxs)(n.li,{children:["the ",(0,t.jsx)(n.strong,{children:"offerers"})," who are providing those cultural offers through the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://passculture.pro/",children:"pro interface"})})]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"technical-users-providers",children:"Technical users: providers"}),"\n",(0,t.jsxs)(n.p,{children:["As a technical partner, you belong to a third kind of user : the ",(0,t.jsx)(n.strong,{children:"providers"}),". Providers are ",(0,t.jsx)(n.strong,{children:"authenticated by an API key"})," and interact with the pass Culture through its ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/rest-api/",children:"REST API"})}),".\nTo be able to manage an offer, the providers need to be given access by the offerer to the venue to which the offer is linked."]}),"\n",(0,t.jsx)(n.h2,{id:"authentication",children:"Authentication"}),"\n",(0,t.jsx)(n.h3,{id:"prerequisite--getting-your-api-keys",children:"Prerequisite : Getting your API keys"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"All our endpoints require you to be authenticated"}),". Authentication is done thanks to an ",(0,t.jsx)(n.strong,{children:"API key"}),". To get your API key, please see the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/docs/mandatory-steps/request-a-provider-account",children:"Request a provider account documentation"})}),"."]}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsxs)(n.p,{children:["You will be given ",(0,t.jsx)(n.strong,{children:"a pair of API keys"})," by our support team :"]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["one to authenticate your calls to the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://backend.integration.passculture.pro",children:"integration test environment"})})]}),"\n",(0,t.jsxs)(n.li,{children:["one to authenticate you calls to the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://backend.passculture.app",children:"production environment"})})]}),"\n"]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"\u26a0\ufe0f Make sure to use the right API key for the right environment."})})]}),"\n",(0,t.jsx)(n.h3,{id:"authenticating-your-requests-with-your-api-key",children:"Authenticating your requests with your API key"}),"\n",(0,t.jsxs)(n.p,{children:["Once you have your API key, add it in your request headers to authenticate your request. The API key should be located in the ",(0,t.jsx)(n.strong,{children:"Authorization header"}),", using the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(n.code,{children:"Bearer"})," pattern"]})," (see example below)."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"# Example of an authenticated request using curl\n# Fetch event categories on the integration test environment\n\ncurl --location 'https://backend.integration.passculture.team/public/offers/v1/events/categories' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer {you-api-key}'\n"})}),"\n",(0,t.jsx)(n.h2,{id:"authorization",children:"Authorization"}),"\n",(0,t.jsxs)(n.p,{children:["Once you are authenticated as a ",(0,t.jsx)(n.strong,{children:"provider"}),", your goal is to be able to manage ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offers"})})," (products or events) and their ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"bookings"})})," using our REST API."]}),"\n",(0,t.jsxs)(n.p,{children:["To be able to perform those actions, ",(0,t.jsxs)(n.strong,{children:["you need to be given access to the ",(0,t.jsx)(n.code,{children:"venue"})," linked to those ",(0,t.jsx)(n.code,{children:"offers"})]}),"."]}),"\n",(0,t.jsxs)(n.h3,{id:"understanding-the-key-resources-offerers-and-venues",children:["Understanding the key resources: ",(0,t.jsx)(n.code,{children:"Offerers"})," and ",(0,t.jsx)(n.code,{children:"Venues"})]}),"\n",(0,t.jsxs)(n.p,{children:["An ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerer"})})," corresponds to the ",(0,t.jsx)(n.strong,{children:"main company"}),", identified in the French administrative system by a ",(0,t.jsx)(n.strong,{children:"SIREN"})," (",(0,t.jsx)(n.em,{children:"syst\xe8me d'identification du r\xe9pertoire des entreprises"}),")."]}),"\n",(0,t.jsxs)(n.p,{children:["A ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"venue"})})," is a ",(0,t.jsx)(n.strong,{children:"physical selling point"}),", identified in the French administrative system by a ",(0,t.jsx)(n.strong,{children:"SIRET"})," (",(0,t.jsx)(n.em,{children:"syst\xe8me d'identification du r\xe9pertoire des \xe9tablissements"}),"). A ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"venue"})})," is always owned by an ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerer"})}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsxs)(n.em,{children:["For instance, the shop ",(0,t.jsx)(n.strong,{children:"FNAC Paris - Saint-Lazare"})," is a ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"venue"})})," (SIRET: 35012746000151), owned by the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerer"})})," ",(0,t.jsx)(n.strong,{children:"FNAC Darty SA"})," (SIREN: 055800296)."]})}),"\n",(0,t.jsxs)(n.h3,{id:"gaining-access-to-a-venue",children:["Gaining access to a ",(0,t.jsx)(n.code,{children:"venue"})]}),"\n",(0,t.jsx)(n.p,{children:"The access to the venue will be given to you either :"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(n.em,{children:"by the offerer"})," in the ",(0,t.jsx)(n.a,{href:"https://passculture.pro/",children:"pro interface"}),", if your are developing a ",(0,t.jsx)(n.em,{children:"public"})," integration"]}),", that is to say an integration that can be used by several ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerers"})}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsxs)(n.em,{children:["For instance, if you are developing a ticketing software and your solution is used by several companies (theaters, museums, stadiums...) each of your client will need to give you access to their venues in the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://passculture.pro/",children:"pro interface"})}),"."]})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(n.em,{children:"by our support team"})," if you are developing a ",(0,t.jsx)(n.em,{children:"private"})," integration"]}),". This situation is relevant for internal technical teams that are developing an integration for their company that won't be used by other ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerers"})}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.admonition,{type:"tip",children:[(0,t.jsxs)(n.p,{children:["If you want ",(0,t.jsx)(n.strong,{children:"to know which venues are linked to your provider account"}),", you can use this ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/rest-api/#tag/Offerer-and-Venues/operation/GetOffererVenues",children:"endpoint"})}),". It is possible to filter by offerer, using the offerer's SIREN."]}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"# Example requests with curl\n\n# Return all the venues linked to your provider account\ncurl --location 'https://backend.integration.passculture.team/public/offers/v1/offerer_venues' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer {you-api-key}'\n\n# Return all the venues linked to your provider account and belonging to the offerer whose siren is 123456789\ncurl --location 'https://backend.integration.passculture.team/public/offers/v1/offerer_venues?siren=123456789' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer {you-api-key}'\n"})})]}),"\n",(0,t.jsx)(n.h3,{id:"authorization-errors",children:"Authorization errors"}),"\n",(0,t.jsxs)(n.p,{children:["Usually the error code when an API user is trying to perform an action it is not allowed to perform is a ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"HTTP 403"})}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For security reasons, on the pass Culture API, ",(0,t.jsxs)(n.strong,{children:["if you are trying to access or modify a resource you don't have access to, you will be returned a ",(0,t.jsx)(n.code,{children:"HTTP 404"})," (i.e. resource not found)"]}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["You will be returne ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"HTTP 403"})})," only in the case you are trying to perform a forbidden action on a resource you have access to (",(0,t.jsx)(n.em,{children:"for instance, trying to cancel an used booking"}),")."]})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>a});var t=r(6540);const i={},s=t.createContext(i);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/75bfd58e.c0959556.js b/assets/js/75bfd58e.c0959556.js deleted file mode 100644 index ee0fb4e..0000000 --- a/assets/js/75bfd58e.c0959556.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[227],{9501:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var t=r(4848),i=r(8453);const s={sidebar_position:1,description:"How authentication and authorization work"},o="Authentication & Authorization",a={id:"understanding-our-api/authentication-authorization",title:"Authentication & Authorization",description:"How authentication and authorization work",source:"@site/docs/understanding-our-api/authentication-authorization.md",sourceDirName:"understanding-our-api",slug:"/understanding-our-api/authentication-authorization",permalink:"/pass-culture-api-documentation/docs/understanding-our-api/authentication-authorization",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,description:"How authentication and authorization work"},sidebar:"tutorialSidebar",previous:{title:"Understanding our API",permalink:"/pass-culture-api-documentation/docs/category/understanding-our-api"},next:{title:"API Resources",permalink:"/pass-culture-api-documentation/docs/category/api-resources"}},c={},d=[{value:"Users",id:"users",level:2},{value:"Non technical users: teenagers and offerers",id:"non-technical-users-teenagers-and-offerers",level:3},{value:"Technical users: providers",id:"technical-users-providers",level:3},{value:"Authentication",id:"authentication",level:2},{value:"Prerequisite : Getting your API keys",id:"prerequisite--getting-your-api-keys",level:3},{value:"Authenticating your requests with your API key",id:"authenticating-your-requests-with-your-api-key",level:3},{value:"Authorization",id:"authorization",level:2},{value:"Understanding the key resources: Offerers and Venues",id:"understanding-the-key-resources-offerers-and-venues",level:3},{value:"Gaining access to a venue",id:"gaining-access-to-a-venue",level:3},{value:"Authorization errors",id:"authorization-errors",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"authentication--authorization",children:"Authentication & Authorization"}),"\n",(0,t.jsx)(n.h2,{id:"users",children:"Users"}),"\n",(0,t.jsx)(n.h3,{id:"non-technical-users-teenagers-and-offerers",children:"Non technical users: teenagers and offerers"}),"\n",(0,t.jsx)(n.p,{children:"There are two main users of the pass Culture application :"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["the ",(0,t.jsx)(n.strong,{children:"teenagers"})," who are using their credit to buy cultural offers through the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://passculture.app/accueil",children:"web application"})})," or the ",(0,t.jsx)(n.strong,{children:"mobile application"})]}),"\n",(0,t.jsxs)(n.li,{children:["the ",(0,t.jsx)(n.strong,{children:"offerers"})," who are providing those cultural offers through the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://passculture.pro/",children:"pro interface"})})]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"technical-users-providers",children:"Technical users: providers"}),"\n",(0,t.jsxs)(n.p,{children:["As a technical partner, you belong to a third kind of user : the ",(0,t.jsx)(n.strong,{children:"providers"}),". Providers are ",(0,t.jsx)(n.strong,{children:"authenticated by an API key"})," and interact with the pass Culture through its ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/rest-api/",children:"REST API"})}),".\nTo be able to manage an offer, the providers need to be given access by the offerer to the venue to which the offer is linked."]}),"\n",(0,t.jsx)(n.h2,{id:"authentication",children:"Authentication"}),"\n",(0,t.jsx)(n.h3,{id:"prerequisite--getting-your-api-keys",children:"Prerequisite : Getting your API keys"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"All our endpoints require you to be authenticated"}),". Authentication is done thanks to an ",(0,t.jsx)(n.strong,{children:"API key"}),". To get your API key, please see the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/docs/mandatory-steps/request-a-provider-account",children:"Request a provider account documentation"})}),"."]}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsxs)(n.p,{children:["You will be given ",(0,t.jsx)(n.strong,{children:"a pair of API keys"})," by our support team :"]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["one to authenticate your calls to the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://backend.integration.passculture.pro",children:"integration test environment"})})]}),"\n",(0,t.jsxs)(n.li,{children:["one to authenticate you calls to the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://backend.passculture.app",children:"production environment"})})]}),"\n"]}),(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"\u26a0\ufe0f Make sure to use the right API key for the right environment."})})]}),"\n",(0,t.jsx)(n.h3,{id:"authenticating-your-requests-with-your-api-key",children:"Authenticating your requests with your API key"}),"\n",(0,t.jsxs)(n.p,{children:["Once you have your API key, add it in your request headers to authenticate your request. The API key should be located in the ",(0,t.jsx)(n.strong,{children:"Authorization header"}),", using the ",(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(n.code,{children:"Bearer"})," pattern"]})," (see example below)."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"# Example of an authenticated request using curl\n# Fetch event categories on the integration test environment\n\ncurl --location 'https://backend.integration.passculture.team/public/offers/v1/events/categories' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer {you-api-key}'\n"})}),"\n",(0,t.jsx)(n.h2,{id:"authorization",children:"Authorization"}),"\n",(0,t.jsxs)(n.p,{children:["Once you are authenticated as a ",(0,t.jsx)(n.strong,{children:"provider"}),", your goal is to be able to manage ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offers"})})," (products or events) and their ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"bookings"})})," using our REST API."]}),"\n",(0,t.jsxs)(n.p,{children:["To be able to perform those actions, ",(0,t.jsxs)(n.strong,{children:["you need to be given access to the ",(0,t.jsx)(n.code,{children:"venue"})," linked to those ",(0,t.jsx)(n.code,{children:"offers"})]}),"."]}),"\n",(0,t.jsxs)(n.h3,{id:"understanding-the-key-resources-offerers-and-venues",children:["Understanding the key resources: ",(0,t.jsx)(n.code,{children:"Offerers"})," and ",(0,t.jsx)(n.code,{children:"Venues"})]}),"\n",(0,t.jsxs)(n.p,{children:["An ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerer"})})," corresponds to the ",(0,t.jsx)(n.strong,{children:"main company"}),", identified in the French administrative system by a ",(0,t.jsx)(n.strong,{children:"SIREN"})," (",(0,t.jsx)(n.em,{children:"syst\xe8me d'identification du r\xe9pertoire des entreprises"}),")."]}),"\n",(0,t.jsxs)(n.p,{children:["A ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"venue"})})," is a ",(0,t.jsx)(n.strong,{children:"physical selling point"}),", identified in the French administrative system by a ",(0,t.jsx)(n.strong,{children:"SIRET"})," (",(0,t.jsx)(n.em,{children:"syst\xe8me d'identification du r\xe9pertoire des \xe9tablissements"}),"). A ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"venue"})})," is always owned by an ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerer"})}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsxs)(n.em,{children:["For instance, the shop ",(0,t.jsx)(n.strong,{children:"FNAC Paris - Saint-Lazare"})," is a ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"venue"})})," (SIRET: 35012746000151), owned by the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerer"})})," ",(0,t.jsx)(n.strong,{children:"FNAC Darty SA"})," (SIREN: 055800296)."]})}),"\n",(0,t.jsxs)(n.h3,{id:"gaining-access-to-a-venue",children:["Gaining access to a ",(0,t.jsx)(n.code,{children:"venue"})]}),"\n",(0,t.jsx)(n.p,{children:"The access to the venue will be given to you either :"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(n.em,{children:"by the offerer"})," in the ",(0,t.jsx)(n.a,{href:"https://passculture.pro/",children:"pro interface"}),", if your are developing a ",(0,t.jsx)(n.em,{children:"public"})," integration"]}),", that is to say an integration that can be used by several ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerers"})}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsxs)(n.em,{children:["For instance, if you are developing a ticketing software and your solution is used by several companies (theaters, museums, stadiums...) each of your client will need to give you access to their venues in the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"https://passculture.pro/",children:"pro interface"})}),"."]})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsxs)(n.strong,{children:[(0,t.jsx)(n.em,{children:"by our support team"})," if you are developing a ",(0,t.jsx)(n.em,{children:"private"})," integration"]}),". This situation is relevant for internal technical teams that are developing an integration for their company that won't be used by other ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"offerers"})}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.admonition,{type:"tip",children:[(0,t.jsxs)(n.p,{children:["If you want ",(0,t.jsx)(n.strong,{children:"to know which venues are linked to your provider account"}),", you can use this ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/rest-api/#tag/Offerer-and-Venues/operation/GetOffererVenues",children:"endpoint"})}),". It is possible to filter by offerer, using the offerer's SIREN."]}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"# Example requests with curl\n\n# Return all the venues linked to your provider account\ncurl --location 'https://backend.integration.passculture.team/public/offers/v1/offerer_venues' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer {you-api-key}'\n\n# Return all the venues linked to your provider account and belonging to the offerer whose siren is 123456789\ncurl --location 'https://backend.integration.passculture.team/public/offers/v1/offerer_venues?siren=123456789' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer {you-api-key}'\n"})})]}),"\n",(0,t.jsx)(n.h3,{id:"authorization-errors",children:"Authorization errors"}),"\n",(0,t.jsxs)(n.p,{children:["Usually the error code when an API user is trying to perform an action it is not allowed to perform is a ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"HTTP 403"})}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For security reasons, on the pass Culture API, ",(0,t.jsxs)(n.strong,{children:["if you are trying to access or modify a resource you don't have access to, you will be returned a ",(0,t.jsx)(n.code,{children:"HTTP 404"})," (i.e. resource not found)"]}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["You will be returne ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.code,{children:"HTTP 403"})})," only in the case you are trying to perform a forbidden action on a resource you have access to (",(0,t.jsx)(n.em,{children:"for instance, trying to cancel an used booking"}),")."]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>a});var t=r(6540);const i={},s=t.createContext(i);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7c110bd0.ea6b77f5.js b/assets/js/7c110bd0.ea6b77f5.js new file mode 100644 index 0000000..b27311d --- /dev/null +++ b/assets/js/7c110bd0.ea6b77f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[877],{2614:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Mandatory steps","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Request a provider account","href":"/docs/mandatory-steps/request-a-provider-account","docId":"mandatory-steps/request-a-provider-account","unlisted":false},{"type":"link","label":"Create test accounts","href":"/docs/mandatory-steps/create-test-accounts","docId":"mandatory-steps/create-test-accounts","unlisted":false}],"href":"/docs/category/mandatory-steps"},{"type":"category","label":"Understanding our API","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Authentication & Authorization","href":"/docs/understanding-our-api/authentication-authorization","docId":"understanding-our-api/authentication-authorization","unlisted":false},{"type":"category","label":"API Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Individual offers","href":"/docs/understanding-our-api/resources/individual-offers","docId":"understanding-our-api/resources/individual-offers","unlisted":false},{"type":"link","label":"Collective offers","href":"/docs/understanding-our-api/resources/collective-offers","docId":"understanding-our-api/resources/collective-offers","unlisted":false}],"href":"/docs/category/api-resources"}],"href":"/docs/category/understanding-our-api"},{"type":"category","label":"Tutorials","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Create an event with an external ticketing system","href":"/docs/tutorials/create-an-event-linked-to-an-external-ticketing-systems","docId":"tutorials/create-an-event-linked-to-an-external-ticketing-systems","unlisted":false},{"type":"link","label":"Create an educational event","href":"/docs/tutorials/create-a-educational-event","docId":"tutorials/create-a-educational-event","unlisted":false},{"type":"link","label":"Create a book or CD product (using EAN)","href":"/docs/tutorials/create-a-book-or-cd-product","docId":"tutorials/create-a-book-or-cd-product","unlisted":false},{"type":"link","label":"Create a product (other than book or CD)","href":"/docs/tutorials/create-a-product-other-than-book","docId":"tutorials/create-a-product-other-than-book","unlisted":false},{"type":"link","label":"Validate a booking","href":"/docs/tutorials/validate-a-booking","docId":"tutorials/validate-a-booking","unlisted":false}],"href":"/docs/category/tutorials"}]},"docs":{"mandatory-steps/create-test-accounts":{"id":"mandatory-steps/create-test-accounts","title":"Create test accounts","description":"In order to test your integration before publishing it in production, we provide you with a test environment.","sidebar":"tutorialSidebar"},"mandatory-steps/request-a-provider-account":{"id":"mandatory-steps/request-a-provider-account","title":"Request a provider account","description":"How to get the necessary accesses to the pass Culture REST API","sidebar":"tutorialSidebar"},"tutorials/create-a-book-or-cd-product":{"id":"tutorials/create-a-book-or-cd-product","title":"Create a book or CD product (using EAN)","description":"TO DO !","sidebar":"tutorialSidebar"},"tutorials/create-a-educational-event":{"id":"tutorials/create-a-educational-event","title":"Create an educational event","description":"TO DO !","sidebar":"tutorialSidebar"},"tutorials/create-a-product-other-than-book":{"id":"tutorials/create-a-product-other-than-book","title":"Create a product (other than book or CD)","description":"To create a book or CD product you must use EAN (see how to create a product)","sidebar":"tutorialSidebar"},"tutorials/create-an-event-linked-to-an-external-ticketing-systems":{"id":"tutorials/create-an-event-linked-to-an-external-ticketing-systems","title":"Create an event with an external ticketing system","description":"TO DO !","sidebar":"tutorialSidebar"},"tutorials/validate-a-booking":{"id":"tutorials/validate-a-booking","title":"Validate a booking","description":"TO DO !","sidebar":"tutorialSidebar"},"understanding-our-api/authentication-authorization":{"id":"understanding-our-api/authentication-authorization","title":"Authentication & Authorization","description":"How authentication and authorization work","sidebar":"tutorialSidebar"},"understanding-our-api/resources/collective-offers":{"id":"understanding-our-api/resources/collective-offers","title":"Collective offers","description":"Collectives offers are events maint for scholar groupes. They can be managed using the collective offers endpoints.","sidebar":"tutorialSidebar"},"understanding-our-api/resources/individual-offers":{"id":"understanding-our-api/resources/individual-offers","title":"Individual offers","description":"Indivual offers are offers meant for individual teenager. They are split in two main categories : products and events.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/81d3b73e.21909def.js b/assets/js/81d3b73e.21909def.js new file mode 100644 index 0000000..664123f --- /dev/null +++ b/assets/js/81d3b73e.21909def.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[16],{1062:t=>{t.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Understanding our API","description":"All the information you need to know to be able to efficiently use our API.","slug":"/category/understanding-our-api","permalink":"/docs/category/understanding-our-api","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Create test accounts","permalink":"/docs/mandatory-steps/create-test-accounts"},"next":{"title":"Authentication & Authorization","permalink":"/docs/understanding-our-api/authentication-authorization"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/825cec5c.dfdbfae2.js b/assets/js/825cec5c.dfdbfae2.js deleted file mode 100644 index 67528f8..0000000 --- a/assets/js/825cec5c.dfdbfae2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[421],{7270:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Mandatory steps","description":"All the steps you need to complete before being able to use the pass Culture API.","slug":"/category/mandatory-steps","permalink":"/pass-culture-api-documentation/docs/category/mandatory-steps","sidebar":"tutorialSidebar","navigation":{"next":{"title":"Request a provider account","permalink":"/pass-culture-api-documentation/docs/mandatory-steps/request-a-provider-account"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/911.b7c1dae0.js b/assets/js/911.84966bdd.js similarity index 62% rename from assets/js/911.b7c1dae0.js rename to assets/js/911.84966bdd.js index 53d68da..1e04b3c 100644 --- a/assets/js/911.b7c1dae0.js +++ b/assets/js/911.84966bdd.js @@ -1,11 +1,11 @@ -/*! For license information please see 911.b7c1dae0.js.LICENSE.txt */ +/*! For license information please see 911.84966bdd.js.LICENSE.txt */ (self.webpackChunkdocumentation_2=self.webpackChunkdocumentation_2||[]).push([[911],{4206:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;const n=r(2785),i=r(7582),o=r(1498),s=r(2791),a="https://json-schema.org/draft/2020-12/schema";class l extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),i.default.forEach((e=>this.addVocabulary(e))),this.opts.discriminator&&this.addKeyword(o.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();const{$data:e,meta:t}=this.opts;t&&(s.default.call(this,e),this.refs["http://json-schema.org/schema"]=a)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(a)?a:void 0)}}e.exports=t=l,Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var c=r(8597);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return c.KeywordCxt}});var u=r(9288);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return u._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return u.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return u.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return u.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return u.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return u.CodeGen}})},5659:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getEsmExportName=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class r{}t._CodeOrName=r,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class n extends r{constructor(e){if(super(),!t.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=n;class i extends r{constructor(e){super(),this._items="string"==typeof e?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const e=this._items[0];return""===e||'""'===e}get str(){var e;return null!==(e=this._str)&&void 0!==e?e:this._str=this._items.reduce(((e,t)=>`${e}${t}`),"")}get names(){var e;return null!==(e=this._names)&&void 0!==e?e:this._names=this._items.reduce(((e,t)=>(t instanceof n&&(e[t.str]=(e[t.str]||0)+1),e)),{})}}function o(e,...t){const r=[e[0]];let n=0;for(;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.or=t.and=t.not=t.CodeGen=t.operators=t.varKinds=t.ValueScopeName=t.ValueScope=t.Scope=t.Name=t.regexpCode=t.stringify=t.getProperty=t.nil=t.strConcat=t.str=t._=void 0;const n=r(5659),i=r(352);var o=r(5659);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return o._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return o.str}}),Object.defineProperty(t,"strConcat",{enumerable:!0,get:function(){return o.strConcat}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return o.nil}}),Object.defineProperty(t,"getProperty",{enumerable:!0,get:function(){return o.getProperty}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return o.stringify}}),Object.defineProperty(t,"regexpCode",{enumerable:!0,get:function(){return o.regexpCode}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return o.Name}});var s=r(352);Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return s.Scope}}),Object.defineProperty(t,"ValueScope",{enumerable:!0,get:function(){return s.ValueScope}}),Object.defineProperty(t,"ValueScopeName",{enumerable:!0,get:function(){return s.ValueScopeName}}),Object.defineProperty(t,"varKinds",{enumerable:!0,get:function(){return s.varKinds}}),t.operators={GT:new n._Code(">"),GTE:new n._Code(">="),LT:new n._Code("<"),LTE:new n._Code("<="),EQ:new n._Code("==="),NEQ:new n._Code("!=="),NOT:new n._Code("!"),OR:new n._Code("||"),AND:new n._Code("&&"),ADD:new n._Code("+")};class a{optimizeNodes(){return this}optimizeNames(e,t){return this}}class l extends a{constructor(e,t,r){super(),this.varKind=e,this.name=t,this.rhs=r}render({es5:e,_n:t}){const r=e?i.varKinds.var:this.varKind,n=void 0===this.rhs?"":` = ${this.rhs}`;return`${r} ${this.name}${n};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&(this.rhs=C(this.rhs,e,t)),this}get names(){return this.rhs instanceof n._CodeOrName?this.rhs.names:{}}}class c extends a{constructor(e,t,r){super(),this.lhs=e,this.rhs=t,this.sideEffects=r}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(!(this.lhs instanceof n.Name)||e[this.lhs.str]||this.sideEffects)return this.rhs=C(this.rhs,e,t),this}get names(){return $(this.lhs instanceof n.Name?{}:{...this.lhs.names},this.rhs)}}class u extends c{constructor(e,t,r,n){super(e,r,n),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class p extends a{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class d extends a{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class f extends a{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class h extends a{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=C(this.code,e,t),this}get names(){return this.code instanceof n._CodeOrName?this.code.names:{}}}class m extends a{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce(((t,r)=>t+r.render(e)),"")}optimizeNodes(){const{nodes:e}=this;let t=e.length;for(;t--;){const r=e[t].optimizeNodes();Array.isArray(r)?e.splice(t,1,...r):r?e[t]=r:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){const{nodes:r}=this;let n=r.length;for(;n--;){const i=r[n];i.optimizeNames(e,t)||(T(e,i.names),r.splice(n,1))}return r.length>0?this:void 0}get names(){return this.nodes.reduce(((e,t)=>P(e,t.names)),{})}}class g extends m{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class y extends m{}class v extends g{}v.kind="else";class b extends g{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+="else "+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();const e=this.condition;if(!0===e)return this.nodes;let t=this.else;if(t){const e=t.optimizeNodes();t=this.else=Array.isArray(e)?new v(e):e}return t?!1===e?t instanceof b?t:t.nodes:this.nodes.length?this:new b(I(e),t instanceof b?[t]:t.nodes):!1!==e&&this.nodes.length?this:void 0}optimizeNames(e,t){var r;if(this.else=null===(r=this.else)||void 0===r?void 0:r.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=C(this.condition,e,t),this}get names(){const e=super.names;return $(e,this.condition),this.else&&P(e,this.else.names),e}}b.kind="if";class x extends g{}x.kind="for";class w extends x{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=C(this.iteration,e,t),this}get names(){return P(super.names,this.iteration.names)}}class O extends x{constructor(e,t,r,n){super(),this.varKind=e,this.name=t,this.from=r,this.to=n}render(e){const t=e.es5?i.varKinds.var:this.varKind,{name:r,from:n,to:o}=this;return`for(${t} ${r}=${n}; ${r}<${o}; ${r}++)`+super.render(e)}get names(){const e=$(super.names,this.from);return $(e,this.to)}}class S extends x{constructor(e,t,r,n){super(),this.loop=e,this.varKind=t,this.name=r,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=C(this.iterable,e,t),this}get names(){return P(super.names,this.iterable.names)}}class k extends g{constructor(e,t,r){super(),this.name=e,this.args=t,this.async=r}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}k.kind="func";class E extends m{render(e){return"return "+super.render(e)}}E.kind="return";class _ extends g{render(e){let t="try"+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),null===(e=this.catch)||void 0===e||e.optimizeNodes(),null===(t=this.finally)||void 0===t||t.optimizeNodes(),this}optimizeNames(e,t){var r,n;return super.optimizeNames(e,t),null===(r=this.catch)||void 0===r||r.optimizeNames(e,t),null===(n=this.finally)||void 0===n||n.optimizeNames(e,t),this}get names(){const e=super.names;return this.catch&&P(e,this.catch.names),this.finally&&P(e,this.finally.names),e}}class A extends g{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}A.kind="catch";class j extends g{render(e){return"finally"+super.render(e)}}j.kind="finally";function P(e,t){for(const r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function $(e,t){return t instanceof n._CodeOrName?P(e,t.names):e}function C(e,t,r){return e instanceof n.Name?o(e):(i=e)instanceof n._Code&&i._items.some((e=>e instanceof n.Name&&1===t[e.str]&&void 0!==r[e.str]))?new n._Code(e._items.reduce(((e,t)=>(t instanceof n.Name&&(t=o(t)),t instanceof n._Code?e.push(...t._items):e.push(t),e)),[])):e;var i;function o(e){const n=r[e.str];return void 0===n||1!==t[e.str]?e:(delete t[e.str],n)}}function T(e,t){for(const r in t)e[r]=(e[r]||0)-(t[r]||0)}function I(e){return"boolean"==typeof e||"number"==typeof e||null===e?!e:n._`!${M(e)}`}t.CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?"\n":""},this._extScope=e,this._scope=new i.Scope({parent:e}),this._nodes=[new y]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){const r=this._extScope.value(e,t);return(this._values[r.prefix]||(this._values[r.prefix]=new Set)).add(r),r}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,r,n){const i=this._scope.toName(t);return void 0!==r&&n&&(this._constants[i.str]=r),this._leafNode(new l(e,i,r)),i}const(e,t,r){return this._def(i.varKinds.const,e,t,r)}let(e,t,r){return this._def(i.varKinds.let,e,t,r)}var(e,t,r){return this._def(i.varKinds.var,e,t,r)}assign(e,t,r){return this._leafNode(new c(e,t,r))}add(e,r){return this._leafNode(new u(e,t.operators.ADD,r))}code(e){return"function"==typeof e?e():e!==n.nil&&this._leafNode(new h(e)),this}object(...e){const t=["{"];for(const[r,i]of e)t.length>1&&t.push(","),t.push(r),(r!==i||this.opts.es5)&&(t.push(":"),(0,n.addCodeArg)(t,i));return t.push("}"),new n._Code(t)}if(e,t,r){if(this._blockNode(new b(e)),t&&r)this.code(t).else().code(r).endIf();else if(t)this.code(t).endIf();else if(r)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new b(e))}else(){return this._elseNode(new v)}endIf(){return this._endBlockNode(b,v)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new w(e),t)}forRange(e,t,r,n,o=(this.opts.es5?i.varKinds.var:i.varKinds.let)){const s=this._scope.toName(e);return this._for(new O(o,s,t,r),(()=>n(s)))}forOf(e,t,r,o=i.varKinds.const){const s=this._scope.toName(e);if(this.opts.es5){const e=t instanceof n.Name?t:this.var("_arr",t);return this.forRange("_i",0,n._`${e}.length`,(t=>{this.var(s,n._`${e}[${t}]`),r(s)}))}return this._for(new S("of",o,s,t),(()=>r(s)))}forIn(e,t,r,o=(this.opts.es5?i.varKinds.var:i.varKinds.const)){if(this.opts.ownProperties)return this.forOf(e,n._`Object.keys(${t})`,r);const s=this._scope.toName(e);return this._for(new S("in",o,s,t),(()=>r(s)))}endFor(){return this._endBlockNode(x)}label(e){return this._leafNode(new p(e))}break(e){return this._leafNode(new d(e))}return(e){const t=new E;if(this._blockNode(t),this.code(e),1!==t.nodes.length)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(E)}try(e,t,r){if(!t&&!r)throw new Error('CodeGen: "try" without "catch" and "finally"');const n=new _;if(this._blockNode(n),this.code(e),t){const e=this.name("e");this._currNode=n.catch=new A(e),t(e)}return r&&(this._currNode=n.finally=new j,this.code(r)),this._endBlockNode(A,j)}throw(e){return this._leafNode(new f(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){const t=this._blockStarts.pop();if(void 0===t)throw new Error("CodeGen: not in self-balancing block");const r=this._nodes.length-t;if(r<0||void 0!==e&&r!==e)throw new Error(`CodeGen: wrong number of nodes: ${r} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=n.nil,r,i){return this._blockNode(new k(e,t,r)),i&&this.code(i).endFunc(),this}endFunc(){return this._endBlockNode(k)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){const r=this._currNode;if(r instanceof e||t&&r instanceof t)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){const t=this._currNode;if(!(t instanceof b))throw new Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){const e=this._nodes;return e[e.length-1]}set _currNode(e){const t=this._nodes;t[t.length-1]=e}},t.not=I;const R=L(t.operators.AND);t.and=function(...e){return e.reduce(R)};const N=L(t.operators.OR);function L(e){return(t,r)=>t===n.nil?r:r===n.nil?t:n._`${M(t)} ${e} ${M(r)}`}function M(e){return e instanceof n.Name?e:n._`(${e})`}t.or=function(...e){return e.reduce(N)}},352:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;const n=r(5659);class i extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}}var o;!function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"}(o=t.UsedValueState||(t.UsedValueState={})),t.varKinds={const:new n.Name("const"),let:new n.Name("let"),var:new n.Name("var")};class s{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof n.Name?e:this.name(e)}name(e){return new n.Name(this._newName(e))}_newName(e){return`${e}${(this._names[e]||this._nameGroup(e)).index++}`}_nameGroup(e){var t,r;if((null===(r=null===(t=this._parent)||void 0===t?void 0:t._prefixes)||void 0===r?void 0:r.has(e))||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}t.Scope=s;class a extends n.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:t,itemIndex:r}){this.value=e,this.scopePath=n._`.${new n.Name(t)}[${r}]`}}t.ValueScopeName=a;const l=n._`\n`;t.ValueScope=class extends s{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?l:n.nil}}get(){return this._scope}name(e){return new a(e,this._newName(e))}value(e,t){var r;if(void 0===t.ref)throw new Error("CodeGen: ref must be passed in value");const n=this.toName(e),{prefix:i}=n,o=null!==(r=t.key)&&void 0!==r?r:t.ref;let s=this._values[i];if(s){const e=s.get(o);if(e)return e}else s=this._values[i]=new Map;s.set(o,n);const a=this._scope[i]||(this._scope[i]=[]),l=a.length;return a[l]=t.ref,n.setValue(t,{property:i,itemIndex:l}),n}getValue(e,t){const r=this._values[e];if(r)return r.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(t=>{if(void 0===t.scopePath)throw new Error(`CodeGen: name "${t}" has no value`);return n._`${e}${t.scopePath}`}))}scopeCode(e=this._values,t,r){return this._reduceValues(e,(e=>{if(void 0===e.value)throw new Error(`CodeGen: name "${e}" has no value`);return e.value.code}),t,r)}_reduceValues(e,r,s={},a){let l=n.nil;for(const c in e){const u=e[c];if(!u)continue;const p=s[c]=s[c]||new Map;u.forEach((e=>{if(p.has(e))return;p.set(e,o.Started);let s=r(e);if(s){const r=this.opts.es5?t.varKinds.var:t.varKinds.const;l=n._`${l}${r} ${e} = ${s};${this.opts._n}`}else{if(!(s=null==a?void 0:a(e)))throw new i(e);l=n._`${l}${s}${this.opts._n}`}p.set(e,o.Completed)}))}return l}}},695:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;const n=r(9288),i=r(2124),o=r(6202);function s(e,t){const r=e.const("err",t);e.if(n._`${o.default.vErrors} === null`,(()=>e.assign(o.default.vErrors,n._`[${r}]`)),n._`${o.default.vErrors}.push(${r})`),e.code(n._`${o.default.errors}++`)}function a(e,t){const{gen:r,validateName:i,schemaEnv:o}=e;o.$async?r.throw(n._`new ${e.ValidationError}(${t})`):(r.assign(n._`${i}.errors`,t),r.return(!1))}t.keywordError={message:({keyword:e})=>n.str`must pass "${e}" keyword validation`},t.keyword$DataError={message:({keyword:e,schemaType:t})=>t?n.str`"${e}" keyword must be ${t} ($data)`:n.str`"${e}" keyword is invalid ($data)`},t.reportError=function(e,r=t.keywordError,i,o){const{it:l}=e,{gen:u,compositeRule:p,allErrors:d}=l,f=c(e,r,i);(null!=o?o:p||d)?s(u,f):a(l,n._`[${f}]`)},t.reportExtraError=function(e,r=t.keywordError,n){const{it:i}=e,{gen:l,compositeRule:u,allErrors:p}=i;s(l,c(e,r,n)),u||p||a(i,o.default.vErrors)},t.resetErrorsCount=function(e,t){e.assign(o.default.errors,t),e.if(n._`${o.default.vErrors} !== null`,(()=>e.if(t,(()=>e.assign(n._`${o.default.vErrors}.length`,t)),(()=>e.assign(o.default.vErrors,null)))))},t.extendErrors=function({gen:e,keyword:t,schemaValue:r,data:i,errsCount:s,it:a}){if(void 0===s)throw new Error("ajv implementation error");const l=e.name("err");e.forRange("i",s,o.default.errors,(s=>{e.const(l,n._`${o.default.vErrors}[${s}]`),e.if(n._`${l}.instancePath === undefined`,(()=>e.assign(n._`${l}.instancePath`,(0,n.strConcat)(o.default.instancePath,a.errorPath)))),e.assign(n._`${l}.schemaPath`,n.str`${a.errSchemaPath}/${t}`),a.opts.verbose&&(e.assign(n._`${l}.schema`,r),e.assign(n._`${l}.data`,i))}))};const l={keyword:new n.Name("keyword"),schemaPath:new n.Name("schemaPath"),params:new n.Name("params"),propertyName:new n.Name("propertyName"),message:new n.Name("message"),schema:new n.Name("schema"),parentSchema:new n.Name("parentSchema")};function c(e,t,r){const{createErrors:i}=e.it;return!1===i?n._`{}`:function(e,t,r={}){const{gen:i,it:s}=e,a=[u(s,r),p(e,r)];return function(e,{params:t,message:r},i){const{keyword:s,data:a,schemaValue:c,it:u}=e,{opts:p,propertyName:d,topSchemaRef:f,schemaPath:h}=u;i.push([l.keyword,s],[l.params,"function"==typeof t?t(e):t||n._`{}`]),p.messages&&i.push([l.message,"function"==typeof r?r(e):r]);p.verbose&&i.push([l.schema,c],[l.parentSchema,n._`${f}${h}`],[o.default.data,a]);d&&i.push([l.propertyName,d])}(e,t,a),i.object(...a)}(e,t,r)}function u({errorPath:e},{instancePath:t}){const r=t?n.str`${e}${(0,i.getErrorPath)(t,i.Type.Str)}`:e;return[o.default.instancePath,(0,n.strConcat)(o.default.instancePath,r)]}function p({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:o}){let s=o?t:n.str`${t}/${e}`;return r&&(s=n.str`${s}${(0,i.getErrorPath)(r,i.Type.Str)}`),[l.schemaPath,s]}},6066:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;const n=r(9288),i=r(4273),o=r(6202),s=r(9630),a=r(2124),l=r(8597);class c{constructor(e){var t;let r;this.refs={},this.dynamicAnchors={},"object"==typeof e.schema&&(r=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=null!==(t=e.baseId)&&void 0!==t?t:(0,s.normalizeId)(null==r?void 0:r[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=null==r?void 0:r.$async,this.refs={}}}function u(e){const t=d.call(this,e);if(t)return t;const r=(0,s.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:a,lines:c}=this.opts.code,{ownProperties:u}=this.opts,p=new n.CodeGen(this.scope,{es5:a,lines:c,ownProperties:u});let f;e.$async&&(f=p.scopeValue("Error",{ref:i.default,code:n._`require("ajv/dist/runtime/validation_error").default`}));const h=p.scopeName("validate");e.validateName=h;const m={gen:p,allErrors:this.opts.allErrors,data:o.default.data,parentData:o.default.parentData,parentDataProperty:o.default.parentDataProperty,dataNames:[o.default.data],dataPathArr:[n.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:p.scopeValue("schema",!0===this.opts.code.source?{ref:e.schema,code:(0,n.stringify)(e.schema)}:{ref:e.schema}),validateName:h,ValidationError:f,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:n.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:n._`""`,opts:this.opts,self:this};let g;try{this._compilations.add(e),(0,l.validateFunctionCode)(m),p.optimize(this.opts.code.optimize);const t=p.toString();g=`const visitedNodesForRef = new WeakMap(); ${p.scopeRefs(o.default.scope)}return ${t}`,this.opts.code.process&&(g=this.opts.code.process(g,e));const r=new Function(`${o.default.self}`,`${o.default.scope}`,g)(this,this.scope.get());if(this.scope.value(h,{ref:r}),r.errors=null,r.schema=e.schema,r.schemaEnv=e,e.$async&&(r.$async=!0),!0===this.opts.code.source&&(r.source={validateName:h,validateCode:t,scopeValues:p._values}),this.opts.unevaluated){const{props:e,items:t}=m;r.evaluated={props:e instanceof n.Name?void 0:e,items:t instanceof n.Name?void 0:t,dynamicProps:e instanceof n.Name,dynamicItems:t instanceof n.Name},r.source&&(r.source.evaluated=(0,n.stringify)(r.evaluated))}return e.validate=r,e}catch(y){throw delete e.validate,delete e.validateName,g&&this.logger.error("Error compiling schema, function code:",g),y}finally{this._compilations.delete(e)}}function p(e){return(0,s.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:u.call(this,e)}function d(e){for(const n of this._compilations)if(r=e,(t=n).schema===r.schema&&t.root===r.root&&t.baseId===r.baseId)return n;var t,r}function f(e,t){let r;for(;"string"==typeof(r=this.refs[t]);)t=r;return r||this.schemas[t]||h.call(this,e,t)}function h(e,t){const r=this.opts.uriResolver.parse(t),n=(0,s._getFullPath)(this.opts.uriResolver,r);let i=(0,s.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===i)return g.call(this,r,e);const o=(0,s.normalizeId)(n),a=this.refs[o]||this.schemas[o];if("string"==typeof a){const t=h.call(this,e,a);if("object"!=typeof(null==t?void 0:t.schema))return;return g.call(this,r,t)}if("object"==typeof(null==a?void 0:a.schema)){if(a.validate||u.call(this,a),o===(0,s.normalizeId)(t)){const{schema:t}=a,{schemaId:r}=this.opts,n=t[r];return n&&(i=(0,s.resolveUrl)(this.opts.uriResolver,i,n)),new c({schema:t,schemaId:r,root:e,baseId:i})}return g.call(this,r,a)}}t.SchemaEnv=c,t.compileSchema=u,t.resolveRef=function(e,t,r){var n;const i=(0,s.resolveUrl)(this.opts.uriResolver,t,r),o=e.refs[i];if(o)return o;let a=f.call(this,e,i);if(void 0===a){const r=null===(n=e.localRefs)||void 0===n?void 0:n[i],{schemaId:o}=this.opts;r&&(a=new c({schema:r,schemaId:o,root:e,baseId:t}))}if(void 0===a&&this.opts.loadSchemaSync){const n=this.opts.loadSchemaSync(t,r,i);!n||this.refs[i]||this.schemas[i]||(this.addSchema(n,i,void 0),a=f.call(this,e,i))}return void 0!==a?e.refs[i]=p.call(this,a):void 0},t.getCompilingSchema=d,t.resolveSchema=h;const m=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function g(e,{baseId:t,schema:r,root:n}){var i;if("/"!==(null===(i=e.fragment)||void 0===i?void 0:i[0]))return;for(const c of e.fragment.slice(1).split("/")){if("boolean"==typeof r)return;const e=r[(0,a.unescapeFragment)(c)];if(void 0===e)return;const n="object"==typeof(r=e)&&r[this.opts.schemaId];!m.has(c)&&n&&(t=(0,s.resolveUrl)(this.opts.uriResolver,t,n))}let o;if("boolean"!=typeof r&&r.$ref&&!(0,a.schemaHasRulesButRef)(r,this.RULES)){const e=(0,s.resolveUrl)(this.opts.uriResolver,t,r.$ref);o=h.call(this,n,e)}const{schemaId:l}=this.opts;return o=o||new c({schema:r,schemaId:l,root:n,baseId:t}),o.schema!==o.root.schema?o:void 0}},6202:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i={data:new n.Name("data"),valCxt:new n.Name("valCxt"),instancePath:new n.Name("instancePath"),parentData:new n.Name("parentData"),parentDataProperty:new n.Name("parentDataProperty"),rootData:new n.Name("rootData"),dynamicAnchors:new n.Name("dynamicAnchors"),isAllOfVariant:new n.Name("isAllOfVariant"),vErrors:new n.Name("vErrors"),errors:new n.Name("errors"),this:new n.Name("this"),self:new n.Name("self"),scope:new n.Name("scope"),json:new n.Name("json"),jsonPos:new n.Name("jsonPos"),jsonLen:new n.Name("jsonLen"),jsonPart:new n.Name("jsonPart")};t.default=i},2830:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9630);class i extends Error{constructor(e,t,r,i){super(i||`can't resolve reference ${r} from id ${t}`),this.missingRef=(0,n.resolveUrl)(e,t,r),this.missingSchema=(0,n.normalizeId)((0,n.getFullPath)(e,this.missingRef))}}t.default=i},9630:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;const n=r(2124),i=r(2017),o=r(7106),s=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);t.inlineRef=function(e,t=!0){return"boolean"==typeof e||(!0===t?!l(e):!!t&&c(e)<=t)};const a=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function l(e){for(const t in e){if(a.has(t))return!0;const r=e[t];if(Array.isArray(r)&&r.some(l))return!0;if("object"==typeof r&&l(r))return!0}return!1}function c(e){let t=0;for(const r in e){if("$ref"===r)return 1/0;if(t++,!s.has(r)&&("object"==typeof e[r]&&(0,n.eachItem)(e[r],(e=>t+=c(e))),t===1/0))return 1/0}return t}function u(e,t="",r){!1!==r&&(t=f(t));const n=e.parse(t);return p(e,n)}function p(e,t){return e.serialize(t).split("#")[0]+"#"}t.getFullPath=u,t._getFullPath=p;const d=/#\/?$/;function f(e){return e?e.replace(d,""):""}t.normalizeId=f,t.resolveUrl=function(e,t,r){return r=f(r),e.resolve(t,r)};const h=/^[a-z_][-a-z0-9._]*$/i;t.getSchemaRefs=function(e,t){if("boolean"==typeof e)return{};const{schemaId:r,uriResolver:n}=this.opts,s=f(e[r]||t),a={"":s},l=u(n,s,!1),c={},p=new Set;return o(e,{allKeys:!0},((e,t,n,i)=>{if(void 0===i)return;const o=l+t;let s=a[i];function u(t){const r=this.opts.uriResolver.resolve;if(t=f(s?r(s,t):t),p.has(t))throw m(t);p.add(t);let n=this.refs[t];return"string"==typeof n&&(n=this.refs[n]),"object"==typeof n?d(e,n.schema,t):t!==f(o)&&("#"===t[0]?(d(e,c[t],t),c[t]=e):this.refs[t]=o),t}function g(e){if("string"==typeof e){if(!h.test(e))throw new Error(`invalid anchor "${e}"`);u.call(this,`#${e}`)}}"string"==typeof e[r]&&(s=u.call(this,e[r])),g.call(this,e.$anchor),g.call(this,e.$dynamicAnchor),a[t]=s})),c;function d(e,t,r){if(void 0!==t&&!i(e,t))throw m(r)}function m(e){return new Error(`reference "${e}" resolves to more than one schema`)}}},9485:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;const r=new Set(["string","number","integer","boolean","null","object","array"]);t.isJSONType=function(e){return"string"==typeof e&&r.has(e)},t.getRules=function(){const e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}},2124:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;const n=r(9288),i=r(5659);function o(e,t=e.schema){const{opts:r,self:n}=e;if(!r.strictSchema)return;if("boolean"==typeof t)return;const i=n.RULES.keywords;for(const o in t)i[o]||h(e,`unknown keyword: "${o}"`)}function s(e,t){if("boolean"==typeof e)return!e;for(const r in e)if(t[r])return!0;return!1}function a(e){return"number"==typeof e?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}function l(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function c({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:i}){return(o,s,a,l)=>{const c=void 0===a?s:a instanceof n.Name?(s instanceof n.Name?e(o,s,a):t(o,s,a),a):s instanceof n.Name?(t(o,a,s),s):r(s,a);return l!==n.Name||c instanceof n.Name?c:i(o,c)}}function u(e,t){if(!0===t)return e.var("props",!0);const r=e.var("props",n._`{}`);return void 0!==t&&p(e,r,t),r}function p(e,t,r){Object.keys(r).forEach((r=>e.assign(n._`${t}${(0,n.getProperty)(r)}`,!0)))}t.toHash=function(e){const t={};for(const r of e)t[r]=!0;return t},t.alwaysValidSchema=function(e,t){return"boolean"==typeof t?t:0===Object.keys(t).length||(o(e,t),!s(t,e.self.RULES.all))},t.checkUnknownRules=o,t.schemaHasRules=s,t.schemaHasRulesButRef=function(e,t){if("boolean"==typeof e)return!e;for(const r in e)if("$ref"!==r&&t.all[r])return!0;return!1},t.schemaRefOrVal=function({topSchemaRef:e,schemaPath:t},r,i,o){if(!o){if("number"==typeof r||"boolean"==typeof r)return r;if("string"==typeof r)return n._`${r}`}return n._`${e}${t}${(0,n.getProperty)(i)}`},t.unescapeFragment=function(e){return l(decodeURIComponent(e))},t.escapeFragment=function(e){return encodeURIComponent(a(e))},t.escapeJsonPointer=a,t.unescapeJsonPointer=l,t.eachItem=function(e,t){if(Array.isArray(e))for(const r of e)t(r);else t(e)},t.mergeEvaluated={props:c({mergeNames:(e,t,r)=>e.if(n._`${r} !== true && ${t} !== undefined`,(()=>{e.if(n._`${t} === true`,(()=>e.assign(r,!0)),(()=>e.assign(r,n._`${r} || {}`).code(n._`Object.assign(${r}, ${t})`)))})),mergeToName:(e,t,r)=>e.if(n._`${r} !== true`,(()=>{!0===t?e.assign(r,!0):(e.assign(r,n._`${r} || {}`),p(e,r,t))})),mergeValues:(e,t)=>!0===e||{...e,...t},resultToName:u}),items:c({mergeNames:(e,t,r)=>e.if(n._`${r} !== true && ${t} !== undefined`,(()=>e.assign(r,n._`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`))),mergeToName:(e,t,r)=>e.if(n._`${r} !== true`,(()=>e.assign(r,!0===t||n._`${r} > ${t} ? ${r} : ${t}`))),mergeValues:(e,t)=>!0===e||Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})},t.evaluatedPropsToName=u,t.setEvaluated=p;const d={};var f;function h(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,!0===r)throw new Error(t);e.self.logger.warn(t)}}t.useFunc=function(e,t){return e.scopeValue("func",{ref:t,code:d[t.code]||(d[t.code]=new i._Code(t.code))})},function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"}(f=t.Type||(t.Type={})),t.getErrorPath=function(e,t,r){if(e instanceof n.Name){const i=t===f.Num;return r?i?n._`"[" + ${e} + "]"`:n._`"['" + ${e} + "']"`:i?n._`"/" + ${e}`:n._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,n.getProperty)(e).toString():"/"+a(e)},t.checkStrictMode=h},9160:(e,t)=>{"use strict";function r(e,t){return t.rules.some((t=>n(e,t)))}function n(e,t){var r;return void 0!==e[t.keyword]||(null===(r=t.definition.implements)||void 0===r?void 0:r.some((t=>void 0!==e[t])))}Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0,t.schemaHasRulesForType=function({schema:e,self:t},n){const i=t.RULES.types[n];return i&&!0!==i&&r(e,i)},t.shouldUseGroup=r,t.shouldUseRule=n},8886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;const n=r(695),i=r(9288),o=r(6202),s={message:"boolean schema is false"};function a(e,t){const{gen:r,data:i}=e,o={gen:r,keyword:"false schema",data:i,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,n.reportError)(o,s,void 0,t)}t.topBoolOrEmptySchema=function(e){const{gen:t,schema:r,validateName:n}=e;!1===r?a(e,!1):"object"==typeof r&&!0===r.$async?t.return(o.default.data):(t.assign(i._`${n}.errors`,null),t.return(!0))},t.boolOrEmptySchema=function(e,t){const{gen:r,schema:n}=e;!1===n?(r.var(t,!1),a(e)):r.var(t,!0)}},6649:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;const n=r(9485),i=r(9160),o=r(695),s=r(9288),a=r(2124);var l;function c(e){const t=Array.isArray(e)?e:e?[e]:[];if(t.every(n.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}!function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"}(l=t.DataType||(t.DataType={})),t.getSchemaTypes=function(e){const t=c(e.type);if(t.includes("null")){if(!1===e.nullable)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&void 0!==e.nullable)throw new Error('"nullable" cannot be used without "type"');!0===e.nullable&&t.push("null")}return t},t.getJSONTypes=c,t.coerceAndCheckDataType=function(e,t){const{gen:r,data:n,opts:o}=e,a=function(e,t){return t?e.filter((e=>u.has(e)||"array"===t&&"array"===e)):[]}(t,o.coerceTypes),c=t.length>0&&!(0===a.length&&1===t.length&&(0,i.schemaHasRulesForType)(e,t[0]));if(c){const i=d(t,n,o.strictNumbers,l.Wrong);r.if(i,(()=>{a.length?function(e,t,r){const{gen:n,data:i,opts:o}=e,a=n.let("dataType",s._`typeof ${i}`),l=n.let("coerced",s._`undefined`);"array"===o.coerceTypes&&n.if(s._`${a} == 'object' && Array.isArray(${i}) && ${i}.length == 1`,(()=>n.assign(i,s._`${i}[0]`).assign(a,s._`typeof ${i}`).if(d(t,i,o.strictNumbers),(()=>n.assign(l,i)))));n.if(s._`${l} !== undefined`);for(const s of r)(u.has(s)||"array"===s&&"array"===o.coerceTypes)&&c(s);function c(e){switch(e){case"string":return void n.elseIf(s._`${a} == "number" || ${a} == "boolean"`).assign(l,s._`"" + ${i}`).elseIf(s._`${i} === null`).assign(l,s._`""`);case"number":return void n.elseIf(s._`${a} == "boolean" || ${i} === null || (${a} == "string" && ${i} && ${i} == +${i})`).assign(l,s._`+${i}`);case"integer":return void n.elseIf(s._`${a} === "boolean" || ${i} === null || (${a} === "string" && ${i} && ${i} == +${i} && !(${i} % 1))`).assign(l,s._`+${i}`);case"boolean":return void n.elseIf(s._`${i} === "false" || ${i} === 0 || ${i} === null`).assign(l,!1).elseIf(s._`${i} === "true" || ${i} === 1`).assign(l,!0);case"null":return n.elseIf(s._`${i} === "" || ${i} === 0 || ${i} === false`),void n.assign(l,null);case"array":n.elseIf(s._`${a} === "string" || ${a} === "number" || ${a} === "boolean" || ${i} === null`).assign(l,s._`[${i}]`)}}n.else(),h(e),n.endIf(),n.if(s._`${l} !== undefined`,(()=>{n.assign(i,l),function({gen:e,parentData:t,parentDataProperty:r},n){e.if(s._`${t} !== undefined`,(()=>e.assign(s._`${t}[${r}]`,n)))}(e,l)}))}(e,t,a):h(e)}))}return c};const u=new Set(["string","number","integer","boolean","null"]);function p(e,t,r,n=l.Correct){const i=n===l.Correct?s.operators.EQ:s.operators.NEQ;let o;switch(e){case"null":return s._`${t} ${i} null`;case"array":o=s._`Array.isArray(${t})`;break;case"object":o=s._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":o=a(s._`!(${t} % 1) && !isNaN(${t})`);break;case"number":o=a();break;default:return s._`typeof ${t} ${i} ${e}`}return n===l.Correct?o:(0,s.not)(o);function a(e=s.nil){return(0,s.and)(s._`typeof ${t} == "number"`,e,r?s._`isFinite(${t})`:s.nil)}}function d(e,t,r,n){if(1===e.length)return p(e[0],t,r,n);let i;const o=(0,a.toHash)(e);if(o.array&&o.object){const e=s._`typeof ${t} != "object"`;i=o.null?e:s._`!${t} || ${e}`,delete o.null,delete o.array,delete o.object}else i=s.nil;o.number&&delete o.integer;for(const a in o)i=(0,s.and)(i,p(a,t,r,n));return i}t.checkDataType=p,t.checkDataTypes=d;const f={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>"string"==typeof e?s._`{type: ${e}}`:s._`{type: ${t}}`};function h(e){const t=function(e){const{gen:t,data:r,schema:n}=e,i=(0,a.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:i,schemaValue:i,parentSchema:n,params:{},it:e}}(e);(0,o.reportError)(t,f)}t.reportTypeError=h},511:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;const n=r(9288),i=r(2124);function o(e,t,r){const{gen:o,compositeRule:s,data:a,opts:l}=e;if(void 0===r)return;const c=n._`${a}${(0,n.getProperty)(t)}`;if(s)return void(0,i.checkStrictMode)(e,`default is ignored for: ${c}`);let u=n._`${c} === undefined`;"empty"===l.useDefaults&&(u=n._`${u} || ${c} === null || ${c} === ""`),o.if(u,n._`${c} = ${(0,n.stringify)(r)}`)}t.assignDefaults=function(e,t){const{properties:r,items:n}=e.schema;if("object"===t&&r)for(const i in r)o(e,i,r[i].default);else"array"===t&&Array.isArray(n)&&n.forEach(((t,r)=>o(e,r,t.default)))}},8597:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;const n=r(8886),i=r(6649),o=r(9160),s=r(6649),a=r(511),l=r(5648),c=r(820),u=r(9288),p=r(6202),d=r(9630),f=r(2124),h=r(695);function m({gen:e,validateName:t,schema:r,schemaEnv:n,opts:i},o){i.code.es5?e.func(t,u._`${p.default.data}, ${p.default.valCxt}`,n.$async,(()=>{e.code(u._`"use strict"; ${g(r,i)}`),function(e,t){e.if(p.default.valCxt,(()=>{e.var(p.default.instancePath,u._`${p.default.valCxt}.${p.default.instancePath}`),e.var(p.default.parentData,u._`${p.default.valCxt}.${p.default.parentData}`),e.var(p.default.parentDataProperty,u._`${p.default.valCxt}.${p.default.parentDataProperty}`),e.var(p.default.rootData,u._`${p.default.valCxt}.${p.default.rootData}`),e.var(p.default.isAllOfVariant,u._`${p.default.valCxt}.${p.default.isAllOfVariant}`),t.dynamicRef&&e.var(p.default.dynamicAnchors,u._`${p.default.valCxt}.${p.default.dynamicAnchors}`)}),(()=>{e.var(p.default.instancePath,u._`""`),e.var(p.default.parentData,u._`undefined`),e.var(p.default.parentDataProperty,u._`undefined`),e.var(p.default.rootData,p.default.data),e.var(p.default.isAllOfVariant,u._`0`),t.dynamicRef&&e.var(p.default.dynamicAnchors,u._`{}`)}))}(e,i),e.code(o)})):e.func(t,u._`${p.default.data}, ${function(e){return u._`{${p.default.instancePath}="", ${p.default.parentData}, ${p.default.parentDataProperty}, ${p.default.rootData}=${p.default.data}${e.dynamicRef?u._`, ${p.default.dynamicAnchors}={}`:u.nil}, ${p.default.isAllOfVariant} = 0}={}`}(i)}`,n.$async,(()=>e.code(g(r,i)).code(o)))}function g(e,t){const r="object"==typeof e&&e[t.schemaId];return r&&(t.code.source||t.code.process)?u._`/*# sourceURL=${r} */`:u.nil}function y(e,t){b(e)&&(x(e),v(e))?function(e,t){const{schema:r,gen:n,opts:i}=e;i.$comment&&r.$comment&&O(e);(function(e){const t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,d.resolveUrl)(e.opts.uriResolver,e.baseId,t))})(e),function(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}(e);const o=n.const("_errs",p.default.errors);w(e,o),n.var(t,u._`${o} === ${p.default.errors}`)}(e,t):(0,n.boolOrEmptySchema)(e,t)}function v({schema:e,self:t}){if("boolean"==typeof e)return!e;for(const r in e)if(t.RULES.all[r])return!0;return!1}function b(e){return"boolean"!=typeof e.schema}function x(e){(0,f.checkUnknownRules)(e),function(e){const{schema:t,errSchemaPath:r,opts:n,self:i}=e;t.$ref&&n.ignoreKeywordsWithRef&&(0,f.schemaHasRulesButRef)(t,i.RULES)&&i.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}(e)}function w(e,t){if(e.opts.jtd)return S(e,[],!1,t);const r=(0,i.getSchemaTypes)(e.schema);S(e,r,!(0,i.coerceAndCheckDataType)(e,r),t)}function O({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:i}){const o=r.$comment;if(!0===i.$comment)e.code(u._`${p.default.self}.logger.log(${o})`);else if("function"==typeof i.$comment){const r=u.str`${n}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code(u._`${p.default.self}.opts.$comment(${o}, ${r}, ${i}.schema)`)}}function S(e,t,r,n){const{gen:i,schema:a,data:l,allErrors:c,opts:d,self:h}=e,{RULES:m}=h;function g(f){(0,o.shouldUseGroup)(a,f)&&(f.type?(i.if((0,s.checkDataType)(f.type,l,d.strictNumbers)),k(e,f),1===t.length&&t[0]===f.type&&r&&(i.else(),(0,s.reportTypeError)(e)),i.endIf()):k(e,f),c||i.if(u._`${p.default.errors} === ${n||0}`))}!a.$ref||!d.ignoreKeywordsWithRef&&(0,f.schemaHasRulesButRef)(a,m)?(d.jtd||function(e,t){if(e.schemaEnv.meta||!e.opts.strictTypes)return;(function(e,t){if(!t.length)return;if(!e.dataTypes.length)return void(e.dataTypes=t);t.forEach((t=>{_(e.dataTypes,t)||A(e,`type "${t}" not allowed by context "${e.dataTypes.join(",")}"`)})),e.dataTypes=e.dataTypes.filter((e=>_(t,e)))})(e,t),e.opts.allowUnionTypes||function(e,t){t.length>1&&(2!==t.length||!t.includes("null"))&&A(e,"use allowUnionTypes to allow union type keyword")}(e,t);!function(e,t){const r=e.self.RULES.all;for(const n in r){const i=r[n];if("object"==typeof i&&(0,o.shouldUseRule)(e.schema,i)){const{type:r}=i.definition;r.length&&!r.some((e=>E(t,e)))&&A(e,`missing type "${r.join(",")}" for keyword "${n}"`)}}}(e,e.dataTypes)}(e,t),i.block((()=>{for(const e of m.rules)g(e);g(m.post)}))):i.block((()=>P(e,"$ref",m.all.$ref.definition)))}function k(e,t){const{gen:r,schema:n,opts:{useDefaults:i}}=e;function s(t,r){return!("unevaluatedProperties"!==r.keyword||!t.properties&&!t.patternProperties||e.isAllOfVariant||!1!==e.opts.defaultUnevaluatedProperties)}i&&(0,a.assignDefaults)(e,t.type),r.block((()=>{for(const r of t.rules)((0,o.shouldUseRule)(n,r)||s(n,r))&&P(e,r.keyword,r.definition,t.type)}))}function E(e,t){return e.includes(t)||"number"===t&&e.includes("integer")}function _(e,t){return e.includes(t)||"integer"===t&&e.includes("number")}function A(e,t){t+=` at "${e.schemaEnv.baseId+e.errSchemaPath}" (strictTypes)`,(0,f.checkStrictMode)(e,t,e.opts.strictTypes)}t.validateFunctionCode=function(e){b(e)&&(x(e),v(e))?function(e){const{schema:t,opts:r,gen:n}=e;m(e,(()=>{r.$comment&&t.$comment&&O(e),function(e){const{schema:t,opts:r}=e;void 0!==t.default&&r.useDefaults&&r.strictSchema&&(0,f.checkStrictMode)(e,"default is ignored in the schema root")}(e),n.let(p.default.vErrors,null),n.let(p.default.errors,0),r.unevaluated&&function(e){const{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",u._`${r}.evaluated`),t.if(u._`${e.evaluated}.dynamicProps`,(()=>t.assign(u._`${e.evaluated}.props`,u._`undefined`))),t.if(u._`${e.evaluated}.dynamicItems`,(()=>t.assign(u._`${e.evaluated}.items`,u._`undefined`)))}(e),w(e),function(e){const{gen:t,schemaEnv:r,validateName:n,ValidationError:i,opts:o}=e;r.$async?t.if(u._`${p.default.errors} === 0`,(()=>t.return(p.default.data)),(()=>t.throw(u._`new ${i}(${p.default.vErrors})`))):(t.assign(u._`${n}.errors`,p.default.vErrors),o.unevaluated&&function({gen:e,evaluated:t,props:r,items:n}){r instanceof u.Name&&e.assign(u._`${t}.props`,r);n instanceof u.Name&&e.assign(u._`${t}.items`,n)}(e),t.return(u._`${p.default.errors} === 0`))}(e)}))}(e):m(e,(()=>(0,n.topBoolOrEmptySchema)(e)))};class j{constructor(e,t,r){if((0,l.validateKeywordUsage)(e,t,r),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=r,this.data=e.data,this.schema=e.schema[r],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,f.schemaRefOrVal)(e,this.schema,r,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",T(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,l.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw new Error(`${r} value must be ${JSON.stringify(t.schemaType)}`);("code"in t?t.trackErrors:!1!==t.errors)&&(this.errsCount=e.gen.const("_errs",p.default.errors))}result(e,t,r){this.failResult((0,u.not)(e),t,r)}failResult(e,t,r){this.gen.if(e),r?r():this.error(),t?(this.gen.else(),t(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,t){this.failResult((0,u.not)(e),void 0,t)}fail(e){if(void 0===e)return this.error(),void(this.allErrors||this.gen.if(!1));this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);const{schemaCode:t}=this;this.fail(u._`${t} !== undefined && (${(0,u.or)(this.invalid$data(),e)})`)}error(e,t,r){if(t)return this.setParams(t),this._error(e,r),void this.setParams({});this._error(e,r)}_error(e,t){(e?h.reportExtraError:h.reportError)(this,this.def.error,t)}$dataError(){(0,h.reportError)(this,this.def.$dataError||h.keyword$DataError)}reset(){if(void 0===this.errsCount)throw new Error('add "trackErrors" to keyword definition');(0,h.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,t){t?Object.assign(this.params,e):this.params=e}block$data(e,t,r=u.nil){this.gen.block((()=>{this.check$data(e,r),t()}))}check$data(e=u.nil,t=u.nil){if(!this.$data)return;const{gen:r,schemaCode:n,schemaType:i,def:o}=this;r.if((0,u.or)(u._`${n} === undefined`,t)),e!==u.nil&&r.assign(e,!0),(i.length||o.validateSchema)&&(r.elseIf(this.invalid$data()),this.$dataError(),e!==u.nil&&r.assign(e,!1)),r.else()}invalid$data(){const{gen:e,schemaCode:t,schemaType:r,def:n,it:i}=this;return(0,u.or)(function(){if(r.length){if(!(t instanceof u.Name))throw new Error("ajv implementation error");const e=Array.isArray(r)?r:[r];return u._`${(0,s.checkDataTypes)(e,t,i.opts.strictNumbers,s.DataType.Wrong)}`}return u.nil}(),function(){if(n.validateSchema){const r=e.scopeValue("validate$data",{ref:n.validateSchema});return u._`!${r}(${t})`}return u.nil}())}subschema(e,t,r){const n=(0,c.getSubschema)(this.it,e);(0,c.extendSubschemaData)(n,this.it,e),(0,c.extendSubschemaMode)(n,e);const i={...this.it,...n,items:void 0,props:void 0,isAllOfVariant:r};return y(i,t),i}mergeEvaluated(e,t){const{it:r,gen:n}=this;r.opts.unevaluated&&(!0!==r.props&&void 0!==e.props&&(r.props=f.mergeEvaluated.props(n,e.props,r.props,t)),!0!==r.items&&void 0!==e.items&&(r.items=f.mergeEvaluated.items(n,e.items,r.items,t)))}mergeValidEvaluated(e,t){const{it:r,gen:n}=this;if(r.opts.unevaluated&&(!0!==r.props||!0!==r.items))return n.if(t,(()=>this.mergeEvaluated(e,u.Name))),!0}}function P(e,t,r,n){const i=new j(e,r,t);"code"in r?r.code(i,n):i.$data&&r.validate?(0,l.funcKeywordCode)(i,r):"macro"in r?(0,l.macroKeywordCode)(i,r):(r.compile||r.validate)&&(0,l.funcKeywordCode)(i,r)}t.KeywordCxt=j;const $=/^\/(?:[^~]|~0|~1)*$/,C=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function T(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let i,o;if(""===e)return p.default.rootData;if("/"===e[0]){if(!$.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);i=e,o=p.default.rootData}else{const s=C.exec(e);if(!s)throw new Error(`Invalid JSON-pointer: ${e}`);const a=+s[1];if(i=s[2],"#"===i){if(a>=t)throw new Error(l("property/index",a));return n[t-a]}if(a>t)throw new Error(l("data",a));if(o=r[t-a],!i)return o}let s=o;const a=i.split("/");for(const c of a)c&&(o=u._`${o}${(0,u.getProperty)((0,f.unescapeJsonPointer)(c))}`,s=u._`${s} && ${o}`);return s;function l(e,r){return`Cannot access ${e} ${r} levels up, current level is ${t}`}}t.getData=T},5648:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;const n=r(9288),i=r(6202),o=r(4608),s=r(695);function a(e){const{gen:t,data:r,it:i}=e;t.if(i.parentData,(()=>t.assign(r,n._`${i.parentData}[${i.parentDataProperty}]`)))}function l(e,t,r){if(void 0===r)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword","function"==typeof r?{ref:r}:{ref:r,code:(0,n.stringify)(r)})}t.macroKeywordCode=function(e,t){const{gen:r,keyword:i,schema:o,parentSchema:s,it:a}=e,c=t.macro.call(a.self,o,s,a),u=l(r,i,c);!1!==a.opts.validateSchema&&a.self.validateSchema(c,!0);const p=r.name("valid");e.subschema({schema:c,schemaPath:n.nil,errSchemaPath:`${a.errSchemaPath}/${i}`,topSchemaRef:u,compositeRule:!0},p),e.pass(p,(()=>e.error(!0)))},t.funcKeywordCode=function(e,t){var r;const{gen:c,keyword:u,schema:p,parentSchema:d,$data:f,it:h}=e;!function({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}(h,t);const m=!f&&t.compile?t.compile.call(h.self,p,d,h):t.validate,g=l(c,u,m),y=c.let("valid");function v(r=(t.async?n._`await `:n.nil)){const s=h.opts.passContext?i.default.this:i.default.self,a=!("compile"in t&&!f||!1===t.schema);c.assign(y,n._`${r}${(0,o.callValidateCode)(e,g,s,a)}`,t.modifying)}function b(e){var r;c.if((0,n.not)(null!==(r=t.valid)&&void 0!==r?r:y),e)}e.block$data(y,(function(){if(!1===t.errors)v(),t.modifying&&a(e),b((()=>e.error()));else{const r=t.async?function(){const e=c.let("ruleErrs",null);return c.try((()=>v(n._`await `)),(t=>c.assign(y,!1).if(n._`${t} instanceof ${h.ValidationError}`,(()=>c.assign(e,n._`${t}.errors`)),(()=>c.throw(t))))),e}():function(){const e=n._`${g}.errors`;return c.assign(e,null),v(n.nil),e}();t.modifying&&a(e),b((()=>function(e,t){const{gen:r}=e;r.if(n._`Array.isArray(${t})`,(()=>{r.assign(i.default.vErrors,n._`${i.default.vErrors} === null ? ${t} : ${i.default.vErrors}.concat(${t})`).assign(i.default.errors,n._`${i.default.vErrors}.length`),(0,s.extendErrors)(e)}),(()=>e.error()))}(e,r)))}})),e.ok(null!==(r=t.valid)&&void 0!==r?r:y)},t.validSchemaType=function(e,t,r=!1){return!t.length||t.some((t=>"array"===t?Array.isArray(e):"object"===t?e&&"object"==typeof e&&!Array.isArray(e):typeof e==t||r&&void 0===e))},t.validateKeywordUsage=function({schema:e,opts:t,self:r,errSchemaPath:n},i,o){if(Array.isArray(i.keyword)?!i.keyword.includes(o):i.keyword!==o)throw new Error("ajv implementation error");const s=i.dependencies;if(null==s?void 0:s.some((t=>!Object.prototype.hasOwnProperty.call(e,t))))throw new Error(`parent schema must have dependencies of ${o}: ${s.join(",")}`);if(i.validateSchema){if(!i.validateSchema(e[o])){const e=`keyword "${o}" value is invalid at path "${n}": `+r.errorsText(i.validateSchema.errors);if("log"!==t.validateSchema)throw new Error(e);r.logger.error(e)}}}},820:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;const n=r(9288),i=r(2124);t.getSubschema=function(e,{keyword:t,schemaProp:r,schema:o,schemaPath:s,errSchemaPath:a,topSchemaRef:l}){if(void 0!==t&&void 0!==o)throw new Error('both "keyword" and "schema" passed, only one allowed');if(void 0!==t){const o=e.schema[t];return void 0===r?{schema:o,schemaPath:n._`${e.schemaPath}${(0,n.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:o[r],schemaPath:n._`${e.schemaPath}${(0,n.getProperty)(t)}${(0,n.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,i.escapeFragment)(r)}`}}if(void 0!==o){if(void 0===s||void 0===a||void 0===l)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:o,schemaPath:s,topSchemaRef:l,errSchemaPath:a}}throw new Error('either "keyword" or "schema" must be passed')},t.extendSubschemaData=function(e,t,{dataProp:r,dataPropType:o,data:s,dataTypes:a,propertyName:l}){if(void 0!==s&&void 0!==r)throw new Error('both "data" and "dataProp" passed, only one allowed');const{gen:c}=t;if(void 0!==r){const{errorPath:s,dataPathArr:a,opts:l}=t;u(c.let("data",n._`${t.data}${(0,n.getProperty)(r)}`,!0)),e.errorPath=n.str`${s}${(0,i.getErrorPath)(r,o,l.jsPropertySyntax)}`,e.parentDataProperty=n._`${r}`,e.dataPathArr=[...a,e.parentDataProperty]}if(void 0!==s){u(s instanceof n.Name?s:c.let("data",s,!0)),void 0!==l&&(e.propertyName=l)}function u(r){e.data=r,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,r]}a&&(e.dataTypes=a)},t.extendSubschemaMode=function(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:i,allErrors:o}){void 0!==n&&(e.compositeRule=n),void 0!==i&&(e.createErrors=i),void 0!==o&&(e.allErrors=o),e.jtdDiscriminator=t,e.jtdMetadata=r}},2785:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var n=r(8597);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return n.KeywordCxt}});var i=r(9288);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return i._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return i.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return i.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return i.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return i.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return i.CodeGen}});const o=r(4273),s=r(2830),a=r(9485),l=r(6066),c=r(9288),u=r(9630),p=r(6649),d=r(2124),f=r(8884),h=r(5689),m=(e,t)=>new RegExp(e,t);m.code="new RegExp";const g=["removeAdditional","useDefaults","coerceTypes","defaultUnevaluatedProperties","defaultAdditionalProperties"],y=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),v={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},b={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'};function x(e){var t,r,n,i,o,s,a,l,c,u,p,d,f,g,y,v,b,x,w,O,S,k,E,_,A;const j=e.strict,P=null===(t=e.code)||void 0===t?void 0:t.optimize,$=!0===P||void 0===P?1:P||0,C=null!==(n=null===(r=e.code)||void 0===r?void 0:r.regExp)&&void 0!==n?n:m,T=null!==(i=e.uriResolver)&&void 0!==i?i:h.default;return{strictSchema:null===(s=null!==(o=e.strictSchema)&&void 0!==o?o:j)||void 0===s||s,strictNumbers:null===(l=null!==(a=e.strictNumbers)&&void 0!==a?a:j)||void 0===l||l,strictTypes:null!==(u=null!==(c=e.strictTypes)&&void 0!==c?c:j)&&void 0!==u?u:"log",strictTuples:null!==(d=null!==(p=e.strictTuples)&&void 0!==p?p:j)&&void 0!==d?d:"log",strictRequired:null!==(g=null!==(f=e.strictRequired)&&void 0!==f?f:j)&&void 0!==g&&g,code:e.code?{...e.code,optimize:$,regExp:C}:{optimize:$,regExp:C},loopRequired:null!==(y=e.loopRequired)&&void 0!==y?y:200,loopEnum:null!==(v=e.loopEnum)&&void 0!==v?v:200,meta:null===(b=e.meta)||void 0===b||b,messages:null===(x=e.messages)||void 0===x||x,inlineRefs:null===(w=e.inlineRefs)||void 0===w||w,schemaId:null!==(O=e.schemaId)&&void 0!==O?O:"$id",addUsedSchema:null===(S=e.addUsedSchema)||void 0===S||S,validateSchema:null===(k=e.validateSchema)||void 0===k||k,validateFormats:null===(E=e.validateFormats)||void 0===E||E,unicodeRegExp:null===(_=e.unicodeRegExp)||void 0===_||_,int32range:null===(A=e.int32range)||void 0===A||A,uriResolver:T}}class w{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...x(e)};const{es5:t,lines:r}=this.opts.code;this.scope=new c.ValueScope({scope:{},prefixes:y,es5:t,lines:r}),this.logger=function(e){if(!1===e)return j;if(void 0===e)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}(e.logger);const n=e.validateFormats;e.validateFormats=!1,this.RULES=(0,a.getRules)(),O.call(this,v,e,"NOT SUPPORTED"),O.call(this,b,e,"DEPRECATED","warn"),this._metaOpts=A.call(this),e.formats&&E.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&_.call(this,e.keywords),"object"==typeof e.meta&&this.addMetaSchema(e.meta),k.call(this),e.validateFormats=n}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){const{$data:e,meta:t,schemaId:r}=this.opts;let n=f;"id"===r&&(n={...f},n.id=n.$id,delete n.$id),t&&e&&this.addMetaSchema(n,n[r],!1)}defaultMeta(){const{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta="object"==typeof e?e[t]||e:void 0}validate(e,t){let r;if("string"==typeof e){if(r=this.getSchema(e),!r)throw new Error(`no schema with key or ref "${e}"`)}else r=this.compile(e);const n=r(t);return"$async"in r||(this.errors=r.errors),n}compile(e,t){const r=this._addSchema(e,t);return r.validate||this._compileSchemaEnv(r)}compileAsync(e,t){if("function"!=typeof this.opts.loadSchema)throw new Error("options.loadSchema should be a function");const{loadSchema:r}=this.opts;return n.call(this,e,t);async function n(e,t){await i.call(this,e.$schema);const r=this._addSchema(e,t);return r.validate||o.call(this,r)}async function i(e){e&&!this.getSchema(e)&&await n.call(this,{$ref:e},!0)}async function o(e){try{return this._compileSchemaEnv(e)}catch(t){if(!(t instanceof s.default))throw t;return a.call(this,t),await l.call(this,t.missingSchema),o.call(this,e)}}function a({missingSchema:e,missingRef:t}){if(this.refs[e])throw new Error(`AnySchema ${e} is loaded but ${t} cannot be resolved`)}async function l(e){const r=await c.call(this,e);this.refs[e]||await i.call(this,r.$schema),this.refs[e]||this.addSchema(r,e,t)}async function c(e){const t=this._loading[e];if(t)return t;try{return await(this._loading[e]=r(e))}finally{delete this._loading[e]}}}addSchema(e,t,r,n=this.opts.validateSchema){if(Array.isArray(e)){for(const t of e)this.addSchema(t,void 0,r,n);return this}let i;if("object"==typeof e){const{schemaId:t}=this.opts;if(i=e[t],void 0!==i&&"string"!=typeof i)throw new Error(`schema ${t} must be string`)}return t=(0,u.normalizeId)(t||i),this._checkUnique(t),this.schemas[t]=this._addSchema(e,r,t,n,!0),this}addMetaSchema(e,t,r=this.opts.validateSchema){return this.addSchema(e,t,!0,r),this}validateSchema(e,t){if("boolean"==typeof e)return!0;let r;if(r=e.$schema,void 0!==r&&"string"!=typeof r)throw new Error("$schema must be a string");if(r=r||this.opts.defaultMeta||this.defaultMeta(),!r)return this.logger.warn("meta-schema not available"),this.errors=null,!0;const n=this.validate(r,e);if(!n&&t){const e="schema is invalid: "+this.errorsText();if("log"!==this.opts.validateSchema)throw new Error(e);this.logger.error(e)}return n}getSchema(e){let t;for(;"string"==typeof(t=S.call(this,e));)e=t;if(void 0===t){const{schemaId:r}=this.opts,n=new l.SchemaEnv({schema:{},schemaId:r});if(t=l.resolveSchema.call(this,n,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{const t=S.call(this,e);return"object"==typeof t&&this._cache.delete(t.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{const t=e;this._cache.delete(t);let r=e[this.opts.schemaId];return r&&(r=(0,u.normalizeId)(r),delete this.schemas[r],delete this.refs[r]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(const t of e)this.addKeyword(t);return this}addKeyword(e,t){let r;if("string"==typeof e)r=e,"object"==typeof t&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=r);else{if("object"!=typeof e||void 0!==t)throw new Error("invalid addKeywords parameters");if(r=(t=e).keyword,Array.isArray(r)&&!r.length)throw new Error("addKeywords: keyword must be string or non-empty array")}if($.call(this,r,t),!t)return(0,d.eachItem)(r,(e=>C.call(this,e))),this;I.call(this,t);const n={...t,type:(0,p.getJSONTypes)(t.type),schemaType:(0,p.getJSONTypes)(t.schemaType)};return(0,d.eachItem)(r,0===n.type.length?e=>C.call(this,e,n):e=>n.type.forEach((t=>C.call(this,e,n,t)))),this}getKeyword(e){const t=this.RULES.all[e];return"object"==typeof t?t.definition:!!t}removeKeyword(e){const{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(const r of t.rules){const t=r.rules.findIndex((t=>t.keyword===e));t>=0&&r.rules.splice(t,1)}return this}addFormat(e,t){return"string"==typeof t&&(t=new RegExp(t)),this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:r="data"}={}){return e&&0!==e.length?e.map((e=>`${r}${e.instancePath} ${e.message}`)).reduce(((e,r)=>e+t+r)):"No errors"}$dataMetaSchema(e,t){const r=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(const n of t){const t=n.split("/").slice(1);let i=e;for(const e of t)i=i[e];for(const e in r){const t=r[e];if("object"!=typeof t)continue;const{$data:n}=t.definition,o=i[e];n&&o&&(i[e]=N(o))}}return e}_removeAllSchemas(e,t){for(const r in e){const n=e[r];t&&!t.test(r)||("string"==typeof n?delete e[r]:n&&!n.meta&&(this._cache.delete(n.schema),delete e[r]))}}_addSchema(e,t,r,n=this.opts.validateSchema,i=this.opts.addUsedSchema){let o;const{schemaId:s}=this.opts;if("object"==typeof e)o=e[s];else{if(this.opts.jtd)throw new Error("schema must be object");if("boolean"!=typeof e)throw new Error("schema must be object or boolean")}let a=this._cache.get(e);if(void 0!==a)return a;r=(0,u.normalizeId)(o||r);const c=u.getSchemaRefs.call(this,e,r);return a=new l.SchemaEnv({schema:e,schemaId:s,meta:t,baseId:r,localRefs:c}),this._cache.set(a.schema,a),i&&!r.startsWith("#")&&(r&&this._checkUnique(r),this.refs[r]=a),n&&this.validateSchema(e,!0),a}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):l.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){const t=this.opts;this.opts=this._metaOpts;try{l.compileSchema.call(this,e)}finally{this.opts=t}}}function O(e,t,r,n="error"){for(const i in e){const o=i;o in t&&this.logger[n](`${r}: option ${i}. ${e[o]}`)}}function S(e){return e=(0,u.normalizeId)(e),this.schemas[e]||this.refs[e]}function k(){const e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(const t in e)this.addSchema(e[t],t)}function E(){for(const e in this.opts.formats){const t=this.opts.formats[e];t&&this.addFormat(e,t)}}function _(e){if(Array.isArray(e))this.addVocabulary(e);else{this.logger.warn("keywords option as map is deprecated, pass array");for(const t in e){const r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}}function A(){const e={...this.opts};for(const t of g)delete e[t];return e}t.default=w,w.ValidationError=o.default,w.MissingRefError=s.default;const j={log(){},warn(){},error(){}};const P=/^[a-z_$][a-z0-9_$:-]*$/i;function $(e,t){const{RULES:r}=this;if((0,d.eachItem)(e,(e=>{if(r.keywords[e])throw new Error(`Keyword ${e} is already defined`);if(!P.test(e))throw new Error(`Keyword ${e} has invalid name`)})),t&&t.$data&&!("code"in t)&&!("validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function C(e,t,r){var n;const i=null==t?void 0:t.post;if(r&&i)throw new Error('keyword with "post" flag cannot have "type"');const{RULES:o}=this;let s=i?o.post:o.rules.find((({type:e})=>e===r));if(s||(s={type:r,rules:[]},o.rules.push(s)),o.keywords[e]=!0,!t)return;const a={keyword:e,definition:{...t,type:(0,p.getJSONTypes)(t.type),schemaType:(0,p.getJSONTypes)(t.schemaType)}};t.before?T.call(this,s,a,t.before):s.rules.push(a),o.all[e]=a,null===(n=t.implements)||void 0===n||n.forEach((e=>this.addKeyword(e)))}function T(e,t,r){const n=e.rules.findIndex((e=>e.keyword===r));n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function I(e){let{metaSchema:t}=e;void 0!==t&&(e.$data&&this.opts.$data&&(t=N(t)),e.validateSchema=this.compile(t,!0))}const R={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function N(e){return{anyOf:[e,R]}}},2791:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(7207),i=r(3243),o=r(8818),s=r(6211),a=r(3953),l=r(6573),c=r(5386),u=r(9509),p=["/properties"];t.default=function(e){return[n,i,o,s,a,t(this,l),c,t(this,u)].forEach((e=>this.addMetaSchema(e,void 0,!1))),this;function t(t,r){return e?t.$dataMetaSchema(r,p):r}}},8947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2017);n.code='require("ajv/dist/runtime/equal").default',t.default=n},9794:(e,t)=>{"use strict";function r(e){const t=e.length;let r,n=0,i=0;for(;i=55296&&r<=56319&&i{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(6579);n.code='require("ajv/dist/runtime/uri").default',t.default=n},4273:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}}t.default=r},2276:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateAdditionalItems=void 0;const n=r(9288),i=r(2124),o={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){const{parentSchema:t,it:r}=e,{items:n}=t;Array.isArray(n)?s(e,n):(0,i.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas')}};function s(e,t){const{gen:r,schema:o,data:s,keyword:a,it:l}=e;l.items=!0;const c=r.const("len",n._`${s}.length`);if(!1===o)e.setParams({len:t.length}),e.pass(n._`${c} <= ${t.length}`);else if("object"==typeof o&&!(0,i.alwaysValidSchema)(l,o)){const o=r.var("valid",n._`${c} <= ${t.length}`);r.if((0,n.not)(o),(()=>function(o){r.forRange("i",t.length,c,(t=>{e.subschema({keyword:a,dataProp:t,dataPropType:i.Type.Num},o),l.allErrors||r.if((0,n.not)(o),(()=>r.break()))}))}(o))),e.ok(o)}}t.validateAdditionalItems=s,t.default=o},3003:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(4608),i=r(9288),o=r(6202),s=r(2124),a={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:e})=>i._`{additionalProperty: ${e.additionalProperty}}`},code(e){const{gen:t,parentSchema:r,data:a,errsCount:l,it:c}=e,{schema:u=c.opts.defaultAdditionalProperties}=e;if(!l)throw new Error("ajv implementation error");const{allErrors:p,opts:d}=c;if(c.props=!0,"all"!==d.removeAdditional&&(0,s.alwaysValidSchema)(c,u))return;const f=(0,n.allSchemaProperties)(r.properties),h=(0,n.allSchemaProperties)(r.patternProperties);function m(e){t.code(i._`delete ${a}[${e}]`)}function g(r){if("all"===d.removeAdditional||d.removeAdditional&&!1===u)m(r);else{if(!1===u)return e.setParams({additionalProperty:r}),e.error(),void(p||t.break());if("object"==typeof u&&!(0,s.alwaysValidSchema)(c,u)){const n=t.name("valid");"failing"===d.removeAdditional?(y(r,n,!1),t.if((0,i.not)(n),(()=>{e.reset(),m(r)}))):(y(r,n),p||t.if((0,i.not)(n),(()=>t.break())))}}}function y(t,r,n){const i={keyword:"additionalProperties",dataProp:t,dataPropType:s.Type.Str};!1===n&&Object.assign(i,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(i,r)}t.forIn("key",a,(o=>{f.length||h.length?t.if(function(o){let a;if(f.length>8){const e=(0,s.schemaRefOrVal)(c,r.properties,"properties");a=(0,n.isOwnProperty)(t,e,o)}else a=f.length?(0,i.or)(...f.map((e=>i._`${o} === ${e}`))):i.nil;return h.length&&(a=(0,i.or)(a,...h.map((t=>i._`${(0,n.usePattern)(e,t)}.test(${o})`)))),(0,i.not)(a)}(o),(()=>g(o))):g(o)})),e.ok(i._`${l} === ${o.default.errors}`)}};t.default=a},5049:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2124),i={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:r,it:i}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");const o=t.name("valid");r.forEach(((t,r)=>{if((0,n.alwaysValidSchema)(i,t))return;const s=e.subschema({keyword:"allOf",schemaProp:r},o,!0);e.ok(o),e.mergeEvaluated(s)}))}};t.default=i},7856:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:r(4608).validateUnion,error:{message:"must match a schema in anyOf"}};t.default=n},3842:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:e,max:t}})=>void 0===t?n.str`must contain at least ${e} valid item(s)`:n.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>void 0===t?n._`{minContains: ${e}}`:n._`{minContains: ${e}, maxContains: ${t}}`},code(e){const{gen:t,schema:r,parentSchema:o,data:s,it:a}=e;let l,c;const{minContains:u,maxContains:p}=o;a.opts.next?(l=void 0===u?1:u,c=p):l=1;const d=t.const("len",n._`${s}.length`);if(e.setParams({min:l,max:c}),void 0===c&&0===l)return void(0,i.checkStrictMode)(a,'"minContains" == 0 without "maxContains": "contains" keyword ignored');if(void 0!==c&&l>c)return(0,i.checkStrictMode)(a,'"minContains" > "maxContains" is always invalid'),void e.fail();if((0,i.alwaysValidSchema)(a,r)){let t=n._`${d} >= ${l}`;return void 0!==c&&(t=n._`${t} && ${d} <= ${c}`),void e.pass(t)}a.items=!0;const f=t.name("valid");function h(){const e=t.name("_valid"),r=t.let("count",0);m(e,(()=>t.if(e,(()=>function(e){t.code(n._`${e}++`),void 0===c?t.if(n._`${e} >= ${l}`,(()=>t.assign(f,!0).break())):(t.if(n._`${e} > ${c}`,(()=>t.assign(f,!1).break())),1===l?t.assign(f,!0):t.if(n._`${e} >= ${l}`,(()=>t.assign(f,!0))))}(r)))))}function m(r,n){t.forRange("i",0,d,(t=>{e.subschema({keyword:"contains",dataProp:t,dataPropType:i.Type.Num,compositeRule:!0},r),n()}))}void 0===c&&1===l?m(f,(()=>t.if(f,(()=>t.break())))):0===l?(t.let(f,!0),void 0!==c&&t.if(n._`${s}.length > 0`,h)):(t.let(f,!1),h()),e.result(f,(()=>e.reset()))}};t.default=o},7630:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;const n=r(9288),i=r(2124),o=r(4608);t.error={message:({params:{property:e,depsCount:t,deps:r}})=>{const i=1===t?"property":"properties";return n.str`must have ${i} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:i}})=>n._`{property: ${e}, missingProperty: ${i}, depsCount: ${t}, - deps: ${r}}`};const s={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(e){const[t,r]=function({schema:e}){const t={},r={};for(const n in e){if("__proto__"===n)continue;(Array.isArray(e[n])?t:r)[n]=e[n]}return[t,r]}(e);a(e,t),l(e,r)}};function a(e,t=e.schema){const{gen:r,data:i,it:s}=e;if(0===Object.keys(t).length)return;const a=r.let("missing");for(const l in t){const c=t[l];if(0===c.length)continue;const u=(0,o.propertyInData)(r,i,l,s.opts.ownProperties);e.setParams({property:l,depsCount:c.length,deps:c.join(", ")}),s.allErrors?r.if(u,(()=>{for(const t of c)(0,o.checkReportMissingProp)(e,t)})):(r.if(n._`${u} && (${(0,o.checkMissingProp)(e,c,a)})`),(0,o.reportMissingProp)(e,a),r.else())}}function l(e,t=e.schema){const{gen:r,data:n,keyword:s,it:a}=e,l=r.name("valid");for(const c in t)(0,i.alwaysValidSchema)(a,t[c])||(r.if((0,o.propertyInData)(r,n,c,a.opts.ownProperties),(()=>{const t=e.subschema({keyword:s,schemaProp:c},l);e.mergeValidEvaluated(t,l)}),(()=>r.var(l,!0))),e.ok(l))}t.validatePropertyDeps=a,t.validateSchemaDeps=l,t.default=s},7894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(7630),i={keyword:"dependentSchemas",type:"object",schemaType:"object",code:e=>(0,n.validateSchemaDeps)(e)};t.default=i},6908:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params:e})=>n.str`must match "${e.ifClause}" schema`,params:({params:e})=>n._`{failingKeyword: ${e.ifClause}}`},code(e){const{gen:t,parentSchema:r,it:o}=e;void 0===r.then&&void 0===r.else&&(0,i.checkStrictMode)(o,'"if" without "then" and "else" is ignored');const a=s(o,"then"),l=s(o,"else");if(!a&&!l)return;const c=t.let("valid",!0),u=t.name("_valid");if(function(){const t=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},u);e.mergeEvaluated(t)}(),e.reset(),a&&l){const r=t.let("ifClause");e.setParams({ifClause:r}),t.if(u,p("then",r),p("else",r))}else a?t.if(u,p("then")):t.if((0,n.not)(u),p("else"));function p(r,i){return()=>{const o=e.subschema({keyword:r},u);t.assign(c,u),e.mergeValidEvaluated(o,c),i?t.assign(i,n._`${r}`):e.setParams({ifClause:r})}}e.pass(c,(()=>e.error(!0)))}};function s(e,t){const r=e.schema[t];return void 0!==r&&!(0,i.alwaysValidSchema)(e,r)}t.default=o},8499:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2276),i=r(3183),o=r(1931),s=r(203),a=r(3842),l=r(7630),c=r(7968),u=r(3003),p=r(5494),d=r(7932),f=r(2346),h=r(7856),m=r(9814),g=r(5049),y=r(6908),v=r(2009);t.default=function(e=!1){const t=[f.default,h.default,m.default,g.default,y.default,v.default,c.default,u.default,l.default,p.default,d.default];return e?t.push(i.default,s.default):t.push(n.default,o.default),t.push(a.default),t}},1931:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;const n=r(9288),i=r(2124),o=r(4608),s={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){const{schema:t,it:r}=e;if(Array.isArray(t))return a(e,"additionalItems",t);r.items=!0,(0,i.alwaysValidSchema)(r,t)||e.ok((0,o.validateArray)(e))}};function a(e,t,r=e.schema){const{gen:o,parentSchema:s,data:a,keyword:l,it:c}=e;!function(e){const{opts:n,errSchemaPath:o}=c,s=r.length,a=s===e.minItems&&(s===e.maxItems||!1===e[t]);if(n.strictTuples&&!a){const e=`"${l}" is ${s}-tuple, but minItems or maxItems/${t} are not specified or different at path "${o}"`;(0,i.checkStrictMode)(c,e,n.strictTuples)}}(s),c.opts.unevaluated&&r.length&&!0!==c.items&&(c.items=i.mergeEvaluated.items(o,r.length,c.items));const u=o.name("valid"),p=o.const("len",n._`${a}.length`);r.forEach(((t,r)=>{(0,i.alwaysValidSchema)(c,t)||(o.if(n._`${p} > ${r}`,(()=>e.subschema({keyword:l,schemaProp:r,dataProp:r},u))),e.ok(u))}))}t.validateTuple=a,t.default=s},203:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o=r(4608),s=r(2276),a={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){const{schema:t,parentSchema:r,it:n}=e,{prefixItems:a}=r;n.items=!0,(0,i.alwaysValidSchema)(n,t)||(a?(0,s.validateAdditionalItems)(e,a):e.ok((0,o.validateArray)(e)))}};t.default=a},2346:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2124),i={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:r,it:i}=e;if((0,n.alwaysValidSchema)(i,r))return void e.fail();const o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,(()=>e.reset()),(()=>e.error()))},error:{message:"must NOT be valid"}};t.default=i},9814:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:e})=>n._`{passingSchemas: ${e.passing}}`},code(e){const{gen:t,schema:r,parentSchema:o,it:s}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(s.opts.discriminator&&o.discriminator)return;const a=r,l=t.let("valid",!1),c=t.let("passing",null),u=t.name("_valid");e.setParams({passing:c}),t.block((function(){a.forEach(((r,o)=>{let a;(0,i.alwaysValidSchema)(s,r)?t.var(u,!0):a=e.subschema({keyword:"oneOf",schemaProp:o,compositeRule:!0},u),o>0&&t.if(n._`${u} && ${l}`).assign(l,!1).assign(c,n._`[${c}, ${o}]`).else(),t.if(u,(()=>{t.assign(l,!0),t.assign(c,o),a&&e.mergeEvaluated(a,n.Name)}))}))})),e.result(l,(()=>e.reset()),(()=>e.error(!0)))}};t.default=o},7932:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(4608),i=r(9288),o=r(2124),s=r(2124),a={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:r,data:a,parentSchema:l,it:c}=e,{opts:u}=c,p=(0,n.allSchemaProperties)(r),d=p.filter((e=>(0,o.alwaysValidSchema)(c,r[e])));if(0===p.length||d.length===p.length&&(!c.opts.unevaluated||!0===c.props))return;const f=u.strictSchema&&!u.allowMatchingProperties&&l.properties,h=t.name("valid");!0===c.props||c.props instanceof i.Name||(c.props=(0,s.evaluatedPropsToName)(t,c.props));const{props:m}=c;function g(e){for(const t in f)new RegExp(e).test(t)&&(0,o.checkStrictMode)(c,`property ${t} matches pattern ${e} (use allowMatchingProperties)`)}function y(r){t.forIn("key",a,(o=>{t.if(i._`${(0,n.usePattern)(e,r)}.test(${o})`,(()=>{const n=d.includes(r);n||e.subschema({keyword:"patternProperties",schemaProp:r,dataProp:o,dataPropType:s.Type.Str},h),c.opts.unevaluated&&!0!==m?t.assign(i._`${m}[${o}]`,!0):n||c.allErrors||t.if((0,i.not)(h),(()=>t.break()))}))}))}!function(){for(const e of p)f&&g(e),c.allErrors?y(e):(t.var(h,!0),y(e),t.if(h))}()}};t.default=a},3183:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(1931),i={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,n.validateTuple)(e,"items")};t.default=i},5494:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(8597),i=r(4608),o=r(2124),s=r(3003),a={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:r,parentSchema:a,data:l,it:c}=e;("all"===c.opts.removeAdditional&&void 0===a.additionalProperties||!1===c.opts.defaultAdditionalProperties)&&s.default.code(new n.KeywordCxt(c,s.default,"additionalProperties"));const u=(0,i.allSchemaProperties)(r);for(const n of u)c.definedProperties.add(n);c.opts.unevaluated&&u.length&&!0!==c.props&&(c.props=o.mergeEvaluated.props(t,(0,o.toHash)(u),c.props));const p=u.filter((e=>!(0,o.alwaysValidSchema)(c,r[e])));if(0===p.length)return;const d=t.name("valid");for(const n of p)f(n)?h(n):(t.if((0,i.propertyInData)(t,l,n,c.opts.ownProperties)),h(n),c.allErrors||t.else().var(d,!0),t.endIf()),e.it.definedProperties.add(n),e.ok(d);function f(e){return c.opts.useDefaults&&!c.compositeRule&&void 0!==r[e].default}function h(t){e.subschema({keyword:"properties",schemaProp:t,dataProp:t},d)}}};t.default=a},7968:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params:e})=>n._`{propertyName: ${e.propertyName}}`},code(e){const{gen:t,schema:r,data:o,it:s}=e;if((0,i.alwaysValidSchema)(s,r))return;const a=t.name("valid");t.forIn("key",o,(r=>{e.setParams({propertyName:r}),e.subschema({keyword:"propertyNames",data:r,dataTypes:["string"],propertyName:r,compositeRule:!0},a),t.if((0,n.not)(a),(()=>{e.error(!0),s.allErrors||t.break()}))})),e.ok(a)}};t.default=o},2009:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2124),i={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){void 0===t.if&&(0,n.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};t.default=i},4608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;const n=r(9288),i=r(2124),o=r(6202),s=r(2124);function a(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:n._`Object.prototype.hasOwnProperty`})}function l(e,t,r){return n._`${a(e)}.call(${t}, ${r})`}function c(e,t,r,i){const o=n._`${t}${(0,n.getProperty)(r)} === undefined`;return i?(0,n.or)(o,(0,n.not)(l(e,t,r))):o}function u(e){return e?Object.keys(e).filter((e=>"__proto__"!==e)):[]}t.checkReportMissingProp=function(e,t){const{gen:r,data:i,it:o}=e;r.if(c(r,i,t,o.opts.ownProperties),(()=>{e.setParams({missingProperty:n._`${t}`},!0),e.error()}))},t.checkMissingProp=function({gen:e,data:t,it:{opts:r}},i,o){return(0,n.or)(...i.map((i=>(0,n.and)(c(e,t,i,r.ownProperties),n._`${o} = ${i}`))))},t.reportMissingProp=function(e,t){e.setParams({missingProperty:t},!0),e.error()},t.hasPropFunc=a,t.isOwnProperty=l,t.propertyInData=function(e,t,r,i){const o=n._`${t}${(0,n.getProperty)(r)} !== undefined`;return i?n._`${o} && ${l(e,t,r)}`:o},t.noPropertyInData=c,t.allSchemaProperties=u,t.schemaProperties=function(e,t){return u(t).filter((r=>!(0,i.alwaysValidSchema)(e,t[r])))},t.callValidateCode=function({schemaCode:e,data:t,it:{gen:r,topSchemaRef:i,schemaPath:s,errorPath:a},it:l},c,u,p){const d=p?n._`${e}, ${t}, ${i}${s}`:t,f=[[o.default.instancePath,(0,n.strConcat)(o.default.instancePath,a)],[o.default.parentData,l.parentData],[o.default.parentDataProperty,l.parentDataProperty],[o.default.rootData,o.default.rootData],[o.default.isAllOfVariant,l.isAllOfVariant?1:0]];l.opts.dynamicRef&&f.push([o.default.dynamicAnchors,o.default.dynamicAnchors]);const h=n._`${d}, ${r.object(...f)}`;return u!==n.nil?n._`${c}.call(${u}, ${h})`:n._`${c}(${h})`};const p=n._`new RegExp`;t.usePattern=function({gen:e,it:{opts:t}},r){const i=t.unicodeRegExp?"u":"",{regExp:o}=t.code,a=o(r,i);return e.scopeValue("pattern",{key:a.toString(),ref:a,code:n._`${"new RegExp"===o.code?p:(0,s.useFunc)(e,o)}(${r}, ${i})`})},t.validateArray=function(e){const{gen:t,data:r,keyword:o,it:s}=e,a=t.name("valid");if(s.allErrors){const e=t.let("valid",!0);return l((()=>t.assign(e,!1))),e}return t.var(a,!0),l((()=>t.break())),a;function l(s){const l=t.const("len",n._`${r}.length`);t.forRange("i",0,l,(r=>{e.subschema({keyword:o,dataProp:r,dataPropType:i.Type.Num},a),t.if((0,n.not)(a),s)}))}},t.validateUnion=function(e){const{gen:t,schema:r,keyword:o,parentSchema:s,it:a}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(a.opts.discriminator&&s.discriminator)return;if(r.some((e=>(0,i.alwaysValidSchema)(a,e)))&&!a.opts.unevaluated)return;const l=t.let("valid",!1),c=t.name("_valid");t.block((()=>r.forEach(((r,i)=>{const s=e.subschema({keyword:o,schemaProp:i,compositeRule:!0},c);t.assign(l,n._`${l} || ${c}`);e.mergeValidEvaluated(s,c)||t.if((0,n.not)(l))})))),e.result(l,(()=>e.reset()),(()=>e.error(!0)))}},7820:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=r},2777:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(7820),i=r(4768),o=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",n.default,i.default];t.default=o},4768:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;const n=r(2830),i=r(4608),o=r(9288),s=r(6202),a=r(6066),l=r(2124),c={keyword:"$ref",schemaType:"string",code(e){const{gen:t,schema:r,it:i}=e,{baseId:s,schemaEnv:l,validateName:c,opts:d,self:f}=i,{root:h}=l;if(("#"===r||"#/"===r)&&s===h.baseId)return function(){if(l===h)return p(e,c,l,l.$async);const r=t.scopeValue("root",{ref:h});return p(e,o._`${r}.validate`,h,h.$async)}();const m=a.resolveRef.call(f,h,s,r);if(void 0===m)throw new n.default(i.opts.uriResolver,s,r);return m instanceof a.SchemaEnv?function(t){const r=u(e,t);p(e,r,t,t.$async)}(m):function(n){const s=t.scopeValue("schema",!0===d.code.source?{ref:n,code:(0,o.stringify)(n)}:{ref:n}),a=t.name("valid"),l=e.subschema({schema:n,dataTypes:[],schemaPath:o.nil,topSchemaRef:s,errSchemaPath:r},a,i.isAllOfVariant);e.mergeEvaluated(l),e.ok(a)}(m)}};function u(e,t){const{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):o._`${r.scopeValue("wrapper",{ref:t})}.validate`}function p(e,t,r,n){const{gen:a,it:c}=e,{allErrors:u,schemaEnv:p,opts:d}=c,f=d.passContext?s.default.this:o.nil;function h(e){const t=o._`${e}.errors`;a.assign(s.default.vErrors,o._`${s.default.vErrors} === null ? ${t} : ${s.default.vErrors}.concat(${t})`),a.assign(s.default.errors,o._`${s.default.vErrors}.length`)}function m(e){var t;if(!c.opts.unevaluated)return;const n=null===(t=null==r?void 0:r.validate)||void 0===t?void 0:t.evaluated;if(!0!==c.props)if(n&&!n.dynamicProps)void 0!==n.props&&(c.props=l.mergeEvaluated.props(a,n.props,c.props));else{const t=a.var("props",o._`${e}.evaluated.props`);c.props=l.mergeEvaluated.props(a,t,c.props,o.Name)}if(!0!==c.items)if(n&&!n.dynamicItems)void 0!==n.items&&(c.items=l.mergeEvaluated.items(a,n.items,c.items));else{const t=a.var("items",o._`${e}.evaluated.items`);c.items=l.mergeEvaluated.items(a,t,c.items,o.Name)}}n?function(){if(!p.$async)throw new Error("async schema referenced by sync schema");const r=a.let("valid");a.try((()=>{a.code(o._`await ${(0,i.callValidateCode)(e,t,f)}`),m(t),u||a.assign(r,!0)}),(e=>{a.if(o._`!(${e} instanceof ${c.ValidationError})`,(()=>a.throw(e))),h(e),u||a.assign(r,!1)})),e.ok(r)}():function(){const r=a.name("visitedNodes");a.code(o._`const ${r} = (typeof visitedNodesForRef !== 'undefined') && visitedNodesForRef.get(${t}) || new Set()`),a.if(o._`!${r}.has(${e.data})`,(()=>{a.code(o._`if (typeof visitedNodesForRef !== 'undefined') visitedNodesForRef.set(${t}, ${r})`),a.code(o._`const dataNode = ${e.data}`),a.code(o._`if (typeof dataNode === "object" && dataNode !== null) ${r}.add(dataNode)`);const n=e.result((0,i.callValidateCode)(e,t,f),(()=>m(t)),(()=>h(t)));return a.code(o._`${r}.delete(dataNode)`),n}))}()}t.getValidate=u,t.callRef=p,t.default=c},1498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(6375),o=r(6066),s=r(2124),a={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError:e,tagName:t}})=>e===i.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf or anyOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>n._`{error: ${e}, tag: ${r}, tagValue: ${t}}`},code(e){const{gen:t,data:r,schema:a,parentSchema:l,it:c}=e,u=l.oneOf?"oneOf":l.anyOf?"anyOf":void 0;if(!c.opts.discriminator)throw new Error("discriminator: requires discriminator option");const p=a.propertyName;if("string"!=typeof p)throw new Error("discriminator: requires propertyName");if(!u)throw new Error("discriminator: requires oneOf or anyOf composite keyword");const d=l[u],f=t.let("valid",!1),h=t.const("tag",n._`${r}${(0,n.getProperty)(p)}`);function m(r){const i=t.name("valid"),o=e.subschema({keyword:u,schemaProp:r},i);return e.mergeEvaluated(o,n.Name),i}t.if(n._`typeof ${h} == "string"`,(()=>function(){const r=function(){var e;const t={},r=i(l);let n=!0;for(let l=0;le[r]===t.$ref));if(r.length){for(const e of r)h(e,l);continue}}m&&!(0,s.schemaHasRulesButRef)(t,c.self.RULES)&&(t=o.resolveRef.call(c.self,c.schemaEnv.root,c.baseId,m),t instanceof o.SchemaEnv&&(t=t.schema));const g=null===(e=null==t?void 0:t.properties)||void 0===e?void 0:e[p];if("object"!=typeof g)throw new Error(`discriminator: ${u} subschemas (or referenced schemas) must have "properties/${p}" or match mapping`);n=n&&(r||i(t)),f(g,l)}if(!n)throw new Error(`discriminator: "${p}" must be required`);return t;function i({required:e}){return Array.isArray(e)&&e.includes(p)}function f(e,t){if(e.const)h(e.const,t);else{if(!e.enum)throw new Error(`discriminator: "properties/${p}" must have "const" or "enum"`);for(const r of e.enum)h(r,t)}}function h(e,r){if("string"!=typeof e||e in t)throw new Error(`discriminator: "${p}" values must be unique strings`);t[e]=r}}();t.if(!1);for(const e in r)t.elseIf(n._`${h} === ${e}`),t.assign(f,m(r[e]));t.else(),e.error(!1,{discrError:i.DiscrError.Mapping,tag:h,tagName:p}),t.endIf()}()),(()=>e.error(!1,{discrError:i.DiscrError.Tag,tag:h,tagName:p}))),e.ok(f)}};t.default=a},6375:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0,function(e){e.Tag="tag",e.Mapping="mapping"}(t.DiscrError||(t.DiscrError={}))},7582:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2777),i=r(1309),o=r(8499),s=r(2135),a=r(8720),l=r(9393),c=r(3949),u=r(344),p=[s.default,n.default,i.default,(0,o.default)(!0),c.default,u.metadataVocabulary,u.contentVocabulary,a.default,l.default];t.default=p},2883:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dynamicAnchor=void 0;const n=r(9288),i=r(6202),o=r(6066),s=r(4768),a={keyword:"$dynamicAnchor",schemaType:"string",code:e=>l(e,e.schema)};function l(e,t){const{gen:r,it:a}=e;a.schemaEnv.root.dynamicAnchors[t]=!0;const l=n._`${i.default.dynamicAnchors}${(0,n.getProperty)(t)}`,c="#"===a.errSchemaPath?a.validateName:function(e){const{schemaEnv:t,schema:r,self:n}=e.it,{root:i,baseId:a,localRefs:l,meta:c}=t.root,{schemaId:u}=n.opts,p=new o.SchemaEnv({schema:r,schemaId:u,root:i,baseId:a,localRefs:l,meta:c});return o.compileSchema.call(n,p),(0,s.getValidate)(e,p)}(e);r.if(n._`!${l}`,(()=>r.assign(l,c)))}t.dynamicAnchor=l,t.default=a},9909:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dynamicRef=void 0;const n=r(9288),i=r(6202),o=r(4768),s={keyword:"$dynamicRef",schemaType:"string",code:e=>a(e,e.schema)};function a(e,t){const{gen:r,keyword:s,it:a}=e;if("#"!==t[0])throw new Error(`"${s}" only supports hash fragment reference`);const l=t.slice(1);if(a.allErrors)c();else{const t=r.let("valid",!1);c(t),e.ok(t)}function c(e){if(a.schemaEnv.root.dynamicAnchors[l]){const t=r.let("_v",n._`${i.default.dynamicAnchors}${(0,n.getProperty)(l)}`);r.if(t,u(t,e),u(a.validateName,e))}else u(a.validateName,e)()}function u(t,n){return n?()=>r.block((()=>{(0,o.callRef)(e,t),r.let(n,!0)})):()=>(0,o.callRef)(e,t)}}t.dynamicRef=a,t.default=s},2135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2883),i=r(9909),o=r(7370),s=r(8582),a=[n.default,i.default,o.default,s.default];t.default=a},7370:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2883),i=r(2124),o={keyword:"$recursiveAnchor",schemaType:"boolean",code(e){e.schema?(0,n.dynamicAnchor)(e,""):(0,i.checkStrictMode)(e.it,"$recursiveAnchor: false is ignored")}};t.default=o},8582:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9909),i={keyword:"$recursiveRef",schemaType:"string",code:e=>(0,n.dynamicRef)(e,e.schema)};t.default=i},5302:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>n.str`must match format "${e}"`,params:({schemaCode:e})=>n._`{format: ${e}}`},code(e,t){const{gen:r,data:i,$data:o,schema:s,schemaCode:a,it:l}=e,{opts:c,errSchemaPath:u,schemaEnv:p,self:d}=l;c.validateFormats&&(o?function(){const o=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),s=r.const("fDef",n._`${o}[${a}]`),l=r.let("fType"),u=r.let("format");r.if(n._`typeof ${s} == "object" && !(${s} instanceof RegExp)`,(()=>r.assign(l,n._`${s}.type || "string"`).assign(u,n._`${s}.validate`)),(()=>r.assign(l,n._`"string"`).assign(u,s))),e.fail$data((0,n.or)(!1===c.strictSchema?n.nil:n._`${a} && !${u}`,function(){const e=p.$async?n._`(${s}.async ? await ${u}(${i}) : ${u}(${i}))`:n._`${u}(${i})`,r=n._`(typeof ${u} == "function" ? ${e} : ${u}.test(${i}))`;return n._`${u} && ${u} !== true && ${l} === ${t} && !${r}`}()))}():function(){const o=d.formats[s];if(!o)return void function(){if(!1===c.strictSchema)return void d.logger.warn(e());throw new Error(e());function e(){return`unknown format "${s}" ignored in schema at path "${u}"`}}();if(!0===o)return;const[a,l,f]=function(e){const t=e instanceof RegExp?(0,n.regexpCode)(e):c.code.formats?n._`${c.code.formats}${(0,n.getProperty)(s)}`:void 0,i=r.scopeValue("formats",{key:s,ref:e,code:t});if("object"==typeof e&&!(e instanceof RegExp))return[e.type||"string",e.validate,n._`${i}.validate`];return["string",e,i]}(o);a===t&&e.pass(function(){if("object"==typeof o&&!(o instanceof RegExp)&&o.async){if(!p.$async)throw new Error("async format in sync schema");return n._`await ${f}(${i})`}return"function"==typeof l?n._`${f}(${i})`:n._`${f}.test(${i})`}())}())}};t.default=i},3949:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=[r(5302).default];t.default=n},344:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]},8720:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(140),i=r(7894),o=r(4391),s=[n.default,i.default,o.default];t.default=s},9393:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(5899),i=r(5396),o=[n.default,i.default];t.default=o},5396:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){const{gen:t,schema:r,data:o,it:s}=e,a=s.items||0;if(!0===a)return;const l=t.const("len",n._`${o}.length`);if(!1===r)e.setParams({len:a}),e.fail(n._`${l} > ${a}`);else if("object"==typeof r&&!(0,i.alwaysValidSchema)(s,r)){const r=t.var("valid",n._`${l} <= ${a}`);t.if((0,n.not)(r),(()=>function(r,o){t.forRange("i",o,l,(o=>{e.subschema({keyword:"unevaluatedItems",dataProp:o,dataPropType:i.Type.Num},r),s.allErrors||t.if((0,n.not)(r),(()=>t.break()))}))}(r,a))),e.ok(r)}s.items=!0}};t.default=o},5899:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o=r(6202),s={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have unevaluated properties",params:({params:e})=>n._`{unevaluatedProperty: ${e.unevaluatedProperty}}`},code(e){const{gen:t,schema:r=e.it.opts.defaultUnevaluatedProperties,data:s,errsCount:a,it:l}=e,c=void 0===e.schema&&!1===e.it.opts.defaultUnevaluatedProperties;if(!a)throw new Error("ajv implementation error");const{allErrors:u,props:p}=l;if(p instanceof n.Name)t.if(n._`${p} !== true`,(()=>t.forIn("key",s,(e=>t.if(function(e,t){return n._`!${e} || !${e}[${t}]`}(p,e),(()=>d(e)))))));else if(!0!==p){const e=()=>t.forIn("key",s,(e=>void 0===p?d(e):t.if(function(e,t){const r=[];for(const i in e)!0===e[i]&&r.push(n._`${t} !== ${i}`);return(0,n.and)(...r)}(p,e),(()=>d(e)))));c&&l.errorPath.emptyStr()?t.if(n._`${o.default.isAllOfVariant} === 0`,e):e()}function d(o){if(!1===r)return e.setParams({unevaluatedProperty:o}),e.error(),void(u||t.break());if(!(0,i.alwaysValidSchema)(l,r)){const r=t.name("valid");e.subschema({keyword:"unevaluatedProperties",dataProp:o,dataPropType:i.Type.Str},r),u||t.if((0,n.not)(r),(()=>t.break()))}}c||(l.props=!0),e.ok(n._`${a} === ${o.default.errors}`)}};t.default=s},7422:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o=r(8947),s={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:e})=>n._`{allowedValue: ${e}}`},code(e){const{gen:t,data:r,$data:s,schemaCode:a,schema:l}=e;s||l&&"object"==typeof l?e.fail$data(n._`!${(0,i.useFunc)(t,o.default)}(${r}, ${a})`):e.fail(n._`${l} !== ${r}`)}};t.default=s},140:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(7630),i={keyword:"dependentRequired",type:"object",schemaType:"object",error:n.error,code:e=>(0,n.validatePropertyDeps)(e)};t.default=i},2468:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o=r(8947),s={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:e})=>n._`{allowedValues: ${e}}`},code(e){const{gen:t,data:r,$data:s,schema:a,schemaCode:l,it:c}=e;if(!s&&0===a.length)throw new Error("enum must have non-empty array");const u=a.length>=c.opts.loopEnum;let p;const d=()=>null!=p?p:p=(0,i.useFunc)(t,o.default);let f;if(u||s)f=t.let("valid"),e.block$data(f,(function(){t.assign(f,!1),t.forOf("v",l,(e=>t.if(n._`${d()}(${r}, ${e})`,(()=>t.assign(f,!0).break()))))}));else{if(!Array.isArray(a))throw new Error("ajv implementation error");const e=t.const("vSchema",l);f=(0,n.or)(...a.map(((t,i)=>function(e,t){const i=a[t];return"object"==typeof i&&null!==i?n._`${d()}(${r}, ${e}[${t}])`:n._`${r} === ${i}`}(e,i))))}e.pass(f)}};t.default=s},1309:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(799),i=r(744),o=r(7214),s=r(5411),a=r(4211),l=r(8412),c=r(9612),u=r(8176),p=r(7422),d=r(2468),f=[n.default,i.default,o.default,s.default,a.default,l.default,c.default,u.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},p.default,d.default];t.default=f},4391:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(2124),i={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:e,parentSchema:t,it:r}){void 0===t.contains&&(0,n.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}};t.default=i},9612:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const r="maxItems"===e?"more":"fewer";return n.str`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){const{keyword:t,data:r,schemaCode:i}=e,o="maxItems"===t?n.operators.GT:n.operators.LT;e.fail$data(n._`${r}.length ${o} ${i}`)}};t.default=i},7214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=r(2124),o=r(9794),s={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const r="maxLength"===e?"more":"fewer";return n.str`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){const{keyword:t,data:r,schemaCode:s,it:a}=e,l="maxLength"===t?n.operators.GT:n.operators.LT,c=!1===a.opts.unicode?n._`${r}.length`:n._`${(0,i.useFunc)(e.gen,o.default)}(${r})`;e.fail$data(n._`${c} ${l} ${s}`)}};t.default=s},799:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i=n.operators,o={maximum:{okStr:"<=",ok:i.LTE,fail:i.GT},minimum:{okStr:">=",ok:i.GTE,fail:i.LT},exclusiveMaximum:{okStr:"<",ok:i.LT,fail:i.GTE},exclusiveMinimum:{okStr:">",ok:i.GT,fail:i.LTE}},s={message:({keyword:e,schemaCode:t})=>n.str`must be ${o[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>n._`{comparison: ${o[e].okStr}, limit: ${t}}`},a={keyword:Object.keys(o),type:"number",schemaType:"number",$data:!0,error:s,code(e){const{keyword:t,data:r,schemaCode:i}=e;e.fail$data(n._`${r} ${o[t].fail} ${i} || isNaN(${r})`)}};t.default=a},4211:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const r="maxProperties"===e?"more":"fewer";return n.str`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){const{keyword:t,data:r,schemaCode:i}=e,o="maxProperties"===t?n.operators.GT:n.operators.LT;e.fail$data(n._`Object.keys(${r}).length ${o} ${i}`)}};t.default=i},744:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(9288),i={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:e})=>n.str`must be multiple of ${e}`,params:({schemaCode:e})=>n._`{multipleOf: ${e}}`},code(e){const{gen:t,data:r,schemaCode:i,it:o}=e,s=o.opts.multipleOfPrecision,a=t.let("res"),l=s?n._`Math.abs(Math.round(${a}) - ${a}) > 1e-${s}`:n._`${a} !== parseInt(${a})`;e.fail$data(n._`(${i} === 0 || (${a} = ${r}/${i}, ${l}))`)}};t.default=i},5411:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(4608),i=r(9288),o={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>i.str`must match pattern "${e}"`,params:({schemaCode:e})=>i._`{pattern: ${e}}`},code(e){const{data:t,$data:r,schema:o,schemaCode:s,it:a}=e,l=a.opts.unicodeRegExp?"u":"",c=r?i._`(new RegExp(${s}, ${l}))`:(0,n.usePattern)(e,o);e.fail$data(i._`!${c}.test(${t})`)}};t.default=o},8412:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(4608),i=r(9288),o=r(2124),s={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:e}})=>i.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>i._`{missingProperty: ${e}}`},code(e){const{gen:t,schema:r,schemaCode:s,data:a,$data:l,it:c}=e,{opts:u}=c;if(!l&&0===r.length)return;const p=r.length>=u.loopRequired;if(c.allErrors?function(){if(p||l)e.block$data(i.nil,d);else for(const t of r)(0,n.checkReportMissingProp)(e,t)}():function(){const o=t.let("missing");if(p||l){const r=t.let("valid",!0);e.block$data(r,(()=>function(r,o){e.setParams({missingProperty:r}),t.forOf(r,s,(()=>{t.assign(o,(0,n.propertyInData)(t,a,r,u.ownProperties)),t.if((0,i.not)(o),(()=>{e.error(),t.break()}))}),i.nil)}(o,r))),e.ok(r)}else t.if((0,n.checkMissingProp)(e,r,o)),(0,n.reportMissingProp)(e,o),t.else()}(),u.strictRequired){const t=e.parentSchema.properties,{definedProperties:n}=e.it;for(const e of r)if(void 0===(null==t?void 0:t[e])&&!n.has(e)){const t=`required property "${e}" is not defined at "${c.schemaEnv.baseId+c.errSchemaPath}" (strictRequired)`;(0,o.checkStrictMode)(c,t,c.opts.strictRequired)}}function d(){t.forOf("prop",s,(r=>{e.setParams({missingProperty:r}),t.if((0,n.noPropertyInData)(t,a,r,u.ownProperties),(()=>e.error()))}))}}};t.default=s},8176:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(6649),i=r(9288),o=r(2124),s=r(8947),a={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:e,j:t}})=>i.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>i._`{i: ${e}, j: ${t}}`},code(e){const{gen:t,data:r,$data:a,schema:l,parentSchema:c,schemaCode:u,it:p}=e;if(!a&&!l)return;const d=t.let("valid"),f=c.items?(0,n.getSchemaTypes)(c.items):[];function h(o,s){const a=t.name("item"),l=(0,n.checkDataTypes)(f,a,p.opts.strictNumbers,n.DataType.Wrong),c=t.const("indices",i._`{}`);t.for(i._`;${o}--;`,(()=>{t.let(a,i._`${r}[${o}]`),t.if(l,i._`continue`),f.length>1&&t.if(i._`typeof ${a} == "string"`,i._`${a} += "_"`),t.if(i._`typeof ${c}[${a}] == "number"`,(()=>{t.assign(s,i._`${c}[${a}]`),e.error(),t.assign(d,!1).break()})).code(i._`${c}[${a}] = ${o}`)}))}function m(n,a){const l=(0,o.useFunc)(t,s.default),c=t.name("outer");t.label(c).for(i._`;${n}--;`,(()=>t.for(i._`${a} = ${n}; ${a}--;`,(()=>t.if(i._`${l}(${r}[${n}], ${r}[${a}])`,(()=>{e.error(),t.assign(d,!1).break(c)}))))))}e.block$data(d,(function(){const n=t.let("i",i._`${r}.length`),o=t.let("j");e.setParams({i:n,j:o}),t.assign(d,!0),t.if(i._`${n} > 1`,(()=>(f.length>0&&!f.some((e=>"object"===e||"array"===e))?h:m)(n,o)))}),i._`${u} === false`),e.ok(d)}};t.default=a},1898:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ApigeeDevOnboardingIntegrationAuthType:()=>i,AuthProviderType:()=>n,LayoutVariant:()=>a,REDOCLY_ROUTE_RBAC:()=>s,REDOCLY_TEAMS_RBAC:()=>o,productConfigOverrideSchema:()=>v,productThemeOverrideSchema:()=>y,rbacConfigSchema:()=>S,rootRedoclyConfigSchema:()=>j});var n,i;!function(e){e.OIDC="OIDC",e.SAML2="SAML2",e.BASIC="BASIC"}(n||(n={})),function(e){e.SERVICE_ACCOUNT="SERVICE_ACCOUNT",e.OAUTH2="OAUTH2"}(i||(i={}));const o="redocly::teams-rbac",s="redocly::route-rbac";var a;!function(e){e.STACKED="stacked",e.THREE_PANEL="three-panel"}(a||(a={}));const l={type:"object",properties:{hide:{type:"boolean"}},additionalProperties:!1},c={type:"object",properties:{src:{type:"string"},async:{type:"boolean"},crossorigin:{type:"string"},defer:{type:"boolean"},fetchpriority:{type:"string"},integrity:{type:"string"},module:{type:"boolean"},nomodule:{type:"boolean"},nonce:{type:"string"},referrerpolicy:{type:"string"},type:{type:"string"}},required:["src"],additionalProperties:!0},u={type:"object",properties:{frontMatterKeysToResolve:{type:"array",items:{type:"string"},default:["image","links"]},partialsFolders:{type:"array",items:{type:"string"},default:["_partials"]},lastUpdatedBlock:{type:"object",properties:Object.assign({format:{type:"string",enum:["timeago","iso","long","short"],default:"timeago"},locale:{type:"string"}},l.properties),additionalProperties:!1,default:{}},toc:{type:"object",properties:Object.assign({header:{type:"string",default:"On this page"},depth:{type:"integer",default:3,minimum:1}},l.properties),additionalProperties:!1,default:{}},editPage:{type:"object",properties:Object.assign({baseUrl:{type:"string"}},l.properties),additionalProperties:!1,default:{}}},additionalProperties:!1,default:{}},p={type:"object",properties:{includeInDevelopment:{type:"boolean"},trackingId:{type:"string"},conversionId:{type:"string"},floodlightId:{type:"string"},optimizeId:{type:"string"},exclude:{type:"array",items:{type:"string"}}},additionalProperties:!1,required:["trackingId"]},d={type:"object",properties:{includeInDevelopment:{type:"boolean"},trackingId:{type:"string"},conversionId:{type:"string"},floodlightId:{type:"string"},head:{type:"boolean"},respectDNT:{type:"boolean"},exclude:{type:"array",items:{type:"string"}},optimizeId:{type:"string"},anonymizeIp:{type:"boolean"},cookieExpires:{type:"number"},trackers:{type:"object",additionalProperties:p}},additionalProperties:!1,required:["trackingId"]},f={type:"object",properties:{page:{type:"string"},directory:{type:"string"},disconnect:{type:"boolean",default:!1},group:{type:"string"},label:{type:"string"},href:{type:"string"},external:{type:"boolean"},labelTranslationKey:{type:"string"},groupTranslationKey:{type:"string"},icon:{oneOf:[{type:"string"},{type:"object",properties:{srcSet:{type:"string"}},required:["srcSet"]}]},separator:{type:"string"},separatorLine:{type:"boolean"},linePosition:{type:"string",enum:["top","bottom"],default:"top"},version:{type:"string"},menuStyle:{type:"string",enum:["drilldown"]},expanded:{type:"string",const:"always"},selectFirstItemOnExpand:{type:"boolean"},flatten:{type:"boolean"},linkedSidebars:{type:"array",items:{type:"string"}},items:{type:"array",items:{type:"object",additionalProperties:!0}}}},h={type:"array",items:Object.assign(Object.assign({},f),{properties:Object.assign(Object.assign({},f.properties),{items:{type:"array",items:f}})})},m={type:"object",patternProperties:{".*":{type:"object",additionalProperties:!0,required:["slug","items"],properties:{slug:{type:"string"},filters:{type:"array",items:{type:"object",additionalProperties:!1,required:["title","property"],properties:{type:{type:"string",enum:["select","checkboxes","date-range"]},title:{type:"string"},titleTranslationKey:{type:"string"},property:{type:"string"},parentFilter:{type:"string"},valuesMapping:{type:"object",additionalProperties:{type:"string"}},missingCategoryName:{type:"string"},missingCategoryNameTranslationKey:{type:"string"},options:{type:"array",items:{type:"string"}}}}},groupByFirstFilter:{type:"boolean"},filterValuesCasing:{type:"string",enum:["sentence","original","lowercase","uppercase"]},items:h,requiredPermission:{type:"string"},separateVersions:{type:"boolean"},title:{type:"string"},titleTranslationKey:{type:"string"},description:{type:"string"},descriptionTranslationKey:{type:"string"}}}}},g={type:"object",properties:{imports:{type:"array",items:{type:"string"},default:[]},logo:{type:"object",properties:{image:{type:"string"},srcSet:{type:"string"},altText:{type:"string"},link:{type:"string"},favicon:{type:"string"}},additionalProperties:!1},navbar:{type:"object",properties:Object.assign({items:h},l.properties),additionalProperties:!1},products:{type:"object",additionalProperties:{type:"object",properties:{name:{type:"string"},icon:{type:"string"},folder:{type:"string"}},additionalProperties:!1,required:["name","folder"]}},footer:{type:"object",properties:Object.assign({items:h,copyrightText:{type:"string"},logo:l},l.properties),additionalProperties:!1},sidebar:{type:"object",properties:Object.assign({separatorLine:{type:"boolean"},linePosition:{type:"string",enum:["top","bottom"],default:"bottom"}},l.properties),additionalProperties:!1},scripts:{type:"object",properties:{head:{type:"array",items:c},body:{type:"array",items:c}},additionalProperties:!1},links:{type:"array",items:{type:"object",properties:{href:{type:"string"},as:{type:"string"},crossorigin:{type:"string"},fetchpriority:{type:"string"},hreflang:{type:"string"},imagesizes:{type:"string"},imagesrcset:{type:"string"},integrity:{type:"string"},media:{type:"string"},prefetch:{type:"string"},referrerpolicy:{type:"string"},rel:{type:"string"},sizes:{type:"string"},title:{type:"string"},type:{type:"string"}},required:["href"],additionalProperties:!0}},feedback:{type:"object",properties:{hide:{type:"boolean",default:!1},type:{type:"string",enum:["rating","sentiment","comment","reasons","mood","scale"],default:"sentiment"},settings:Object.assign({type:"object",properties:{label:{type:"string"},submitText:{type:"string"},buttonText:{type:"string"},component:{type:"string",enum:["radio","checkbox"],default:"checkbox"},items:{type:"array",items:{type:"string"},minItems:1},leftScaleLabel:{type:"string"},rightScaleLabel:{type:"string"},reasons:{type:"object",properties:{hide:{type:"boolean",default:!1},component:{type:"string",enum:["radio","checkbox"],default:"checkbox"},label:{type:"string"},items:{type:"array",items:{type:"string"}}},additionalProperties:!1},comment:{type:"object",properties:{hide:{type:"boolean",default:!1},label:{type:"string"},likeLabel:{type:"string"},dislikeLabel:{type:"string"},satisfiedLabel:{type:"string"},neutralLabel:{type:"string"},dissatisfiedLabel:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},l.properties)},additionalProperties:!1,default:{}},search:{type:"object",properties:Object.assign({placement:{type:"string",default:"navbar"},shortcuts:{type:"array",items:{type:"string"},default:["/"]},suggestedPages:{type:"array",items:{type:"object",properties:{page:{type:"string"},label:{type:"string"},labelTranslationKey:{type:"string"}},required:["page"]}},fuzzy:{type:"boolean",default:!1}},l.properties),additionalProperties:!1,default:{}},colorMode:{type:"object",properties:Object.assign({ignoreDetection:{type:"boolean"},modes:{type:"array",items:{type:"string"},default:["light","dark"]}},l.properties),additionalProperties:!1,default:{}},navigation:{type:"object",properties:{nextButton:{type:"object",properties:Object.assign({text:{type:"string",default:"Next to {{label}}"}},l.properties),additionalProperties:!1,default:{}},previousButton:{type:"object",properties:Object.assign({text:{type:"string",default:"Back to {{label}}"}},l.properties),additionalProperties:!1,default:{}}},additionalProperties:!1,default:{}},codeSnippet:{type:"object",properties:{elementFormat:{type:"string",default:"icon"},copy:{type:"object",properties:Object.assign({},l.properties),additionalProperties:!1,default:{hide:!1}},report:{type:"object",properties:Object.assign({tooltipText:{type:"string"},buttonText:{type:"string"},label:{type:"string"}},l.properties),additionalProperties:!1,default:{hide:!1}},expand:{type:"object",properties:Object.assign({},l.properties),additionalProperties:!1,default:{hide:!1}},collapse:{type:"object",properties:Object.assign({},l.properties),additionalProperties:!1,default:{hide:!1}}},additionalProperties:!1,default:{}},markdown:u,openapi:{type:"object",additionalProperties:!0},graphql:{type:"object",additionalProperties:!0},analytics:{type:"object",properties:{adobe:{type:"object",properties:{includeInDevelopment:{type:"boolean"},scriptUrl:{type:"string"},pageViewEventName:{type:"string"}},additionalProperties:!1,required:["scriptUrl"]},amplitude:{type:"object",properties:{includeInDevelopment:{type:"boolean"},apiKey:{type:"string"},head:{type:"boolean"},respectDNT:{type:"boolean"},exclude:{type:"array",items:{type:"string"}},outboundClickEventName:{type:"string"},pageViewEventName:{type:"string"},amplitudeConfig:{type:"object",additionalProperties:!0}},additionalProperties:!1,required:["apiKey"]},fullstory:{type:"object",properties:{includeInDevelopment:{type:"boolean"},orgId:{type:"string"}},additionalProperties:!1,required:["orgId"]},heap:{type:"object",properties:{includeInDevelopment:{type:"boolean"},appId:{type:"string"}},additionalProperties:!1,required:["appId"]},rudderstack:{type:"object",properties:{includeInDevelopment:{type:"boolean"},writeKey:{type:"string",minLength:10},trackPage:{type:"boolean"},dataPlaneUrl:{type:"string"},controlPlaneUrl:{type:"string"},sdkUrl:{type:"string"},loadOptions:{type:"object",additionalProperties:!0}},additionalProperties:!1,required:["writeKey"]},segment:{type:"object",properties:{includeInDevelopment:{type:"boolean"},writeKey:{type:"string",minLength:10},trackPage:{type:"boolean"},includeTitleInPageCall:{type:"boolean"},host:{type:"string"}},additionalProperties:!1,required:["writeKey"]},gtm:{type:"object",properties:{includeInDevelopment:{type:"boolean"},trackingId:{type:"string"},gtmAuth:{type:"string"},gtmPreview:{type:"string"},defaultDataLayer:{},dataLayerName:{type:"string"},enableWebVitalsTracking:{type:"boolean"},selfHostedOrigin:{type:"string"},pageViewEventName:{type:"string"}},additionalProperties:!1,required:["trackingId"]},ga:d}},userProfile:{type:"object",properties:Object.assign({loginLabel:{type:"string",default:"Login"},logoutLabel:{type:"string",default:"Logout"},menu:{type:"array",items:{type:"object",properties:{label:{type:"string"},external:{type:"boolean"},link:{type:"string"},separatorLine:{type:"boolean"}},additionalProperties:!0},default:[]}},l.properties),additionalProperties:!1,default:{}},versionPicker:{type:"object",properties:{hide:{type:"boolean"},showForUnversioned:{type:"boolean"}}},breadcrumbs:{type:"object",properties:{hide:{type:"boolean"},prefixItems:{type:"array",items:{type:"object",properties:{label:{type:"string"},labelTranslationKey:{type:"string"},page:{type:"string"}},additionalProperties:!1,default:{}}}},additionalProperties:!1,default:{}},catalog:m,scorecard:{type:"object",additionalProperties:!0,required:[],properties:{ignoreNonCompliant:{type:"boolean",default:!1},teamMetadataProperty:{type:"object",properties:{property:{type:"string"},label:{type:"string"},default:{type:"string"}}},levels:{type:"array",items:{type:"object",required:["name"],properties:{name:{type:"string"},color:{type:"string"},extends:{type:"array",items:{type:"string"}},rules:{type:"object",additionalProperties:{oneOf:[{type:"string"},{type:"object"}]}}},additionalProperties:!1}},targets:{type:"array",items:{type:"object",required:["where"],properties:{minimumLevel:{type:"string"},where:{type:"object",required:["metadata"],properties:{metadata:{type:"object",additionalProperties:{type:"string"}}},additionalProperties:!1}},additionalProperties:!1}}}}},additionalProperties:!0,default:{}},y={type:"object",properties:{logo:g.properties.logo,navbar:g.properties.navbar,footer:g.properties.footer,sidebar:g.properties.sidebar,search:g.properties.search,codeSnippet:g.properties.codeSnippet,breadcrumbs:g.properties.breadcrumbs,feedback:g.properties.feedback,analytics:{type:"object",properties:{ga:p}}},additionalProperties:!0,default:{}},v={type:"object",properties:{theme:y},additionalProperties:!1},b={type:"object",additionalProperties:{oneOf:[{type:"object",properties:{type:{type:"string",const:n.OIDC},title:{type:"string"},pkce:{type:"boolean",default:!1},configurationUrl:{type:"string",minLength:1},configuration:{type:"object",properties:{end_session_endpoint:{type:"string"},token_endpoint:{type:"string"},authorization_endpoint:{type:"string"},jwks_uri:{type:"string"}},required:["token_endpoint","authorization_endpoint"],additionalProperties:!0},clientId:{type:"string",minLength:1},clientSecret:{type:"string",minLength:0},teamsClaimName:{type:"string"},teamsClaimMap:{type:"object",additionalProperties:{type:"string"}},defaultTeams:{type:"array",items:{type:"string"}},scopes:{type:"array",items:{type:"string"}},tokenExpirationTime:{type:"number"},authorizationRequestCustomParams:{type:"object",additionalProperties:{type:"string"}},tokenRequestCustomParams:{type:"object",additionalProperties:{type:"string"}},audience:{type:"array",items:{type:"string"}}},required:["type","clientId"],oneOf:[{required:["configurationUrl"]},{required:["configuration"]}],additionalProperties:!1},{type:"object",properties:{type:{type:"string",const:n.SAML2},title:{type:"string"},issuerId:{type:"string"},entityId:{type:"string"},ssoUrl:{type:"string"},x509PublicCert:{type:"string"},teamsAttributeName:{type:"string",default:"https://redocly.com/sso/teams"},teamsAttributeMap:{type:"object",additionalProperties:{type:"string"}},defaultTeams:{type:"array",items:{type:"string"}}},additionalProperties:!1,required:["type","issuerId","ssoUrl","x509PublicCert"]},{type:"object",properties:{type:{type:"string",const:n.BASIC},title:{type:"string"},credentials:{type:"array",items:{type:"object",properties:{username:{type:"string"},password:{type:"string"},passwordHash:{type:"string"},teams:{type:"array",items:{type:"string"}}},required:["username"],additionalProperties:!1}}},required:["type","credentials"],additionalProperties:!1}],discriminator:{propertyName:"type"}}},x={type:"object",additionalProperties:{type:"object",properties:{to:{type:"string"},type:{type:"number",default:301}},additionalProperties:!1},default:{}},w={type:"object",properties:{root:{type:"string"},output:{type:"string",pattern:"(.ya?ml|.json)$"},rbac:{type:"object",additionalProperties:!0},theme:{type:"object",properties:{openapi:g.properties.openapi,graphql:g.properties.graphql},additionalProperties:!1},title:{type:"string"},metadata:{type:"object",additionalProperties:!0},rules:{type:"object",additionalProperties:!0},decorators:{type:"object",additionalProperties:!0},preprocessors:{type:"object",additionalProperties:!0}},required:["root"]},O={type:"object",additionalProperties:{type:"string"}},S={type:"object",properties:{teamNamePatterns:{type:"array",items:{type:"string"}},teamFolders:{type:"array",items:{type:"string"}},teamFoldersBaseRoles:O,cms:O,reunite:O,content:{type:"object",properties:{"**":O},additionalProperties:O}},additionalProperties:O},k={type:"object",properties:{type:{type:"string",const:"APIGEE_X"},apiUrl:{type:"string"},stage:{type:"string",default:"non-production"},organizationName:{type:"string"},ignoreApiProducts:{type:"array",items:{type:"string"}},allowApiProductsOutsideCatalog:{type:"boolean",default:!1},auth:{type:"object",oneOf:[{type:"object",properties:{type:{type:"string",const:i.OAUTH2},tokenEndpoint:{type:"string"},clientId:{type:"string"},clientSecret:{type:"string"}},additionalProperties:!1,required:["type","tokenEndpoint","clientId","clientSecret"]},{type:"object",properties:{type:{type:"string",const:i.SERVICE_ACCOUNT},serviceAccountEmail:{type:"string"},serviceAccountPrivateKey:{type:"string"}},additionalProperties:!1,required:["type","serviceAccountEmail","serviceAccountPrivateKey"]}],discriminator:{propertyName:"type"}}},additionalProperties:!1,required:["type","organizationName","auth"]},E=Object.assign(Object.assign({},k),{properties:Object.assign(Object.assign({},k.properties),{type:{type:"string",const:"APIGEE_EDGE"}})}),_={type:"object",properties:{licenseKey:{type:"string"},redirects:x,seo:{type:"object",properties:{title:{type:"string"},description:{type:"string"},siteUrl:{type:"string"},image:{type:"string"},keywords:{oneOf:[{type:"array",items:{type:"string"}},{type:"string"}]},lang:{type:"string"},jsonLd:{type:"object"},meta:{type:"array",items:{type:"object",properties:{name:{type:"string"},content:{type:"string"}},required:["name","content"],additionalProperties:!1}}},additionalProperties:!1},rbac:S,responseHeaders:{type:"object",additionalProperties:{type:"array",items:{type:"object",properties:{name:{type:"string"},value:{type:"string"}},additionalProperties:!1,required:["name","value"]}}},mockServer:{type:"object",properties:{off:{type:"boolean",default:!1},position:{type:"string",enum:["first","last","replace","off"],default:"first"},strictExamples:{type:"boolean",default:!1},errorIfForcedExampleNotFound:{type:"boolean",default:!1},description:{type:"string"}}},apis:{type:"object",additionalProperties:w},ssoOnPrem:b,sso:{oneOf:[{type:"array",items:{type:"string",enum:["REDOCLY","CORPORATE","GUEST"]},uniqueItems:!0},{type:"string",enum:["REDOCLY","CORPORATE","GUEST"]}]},residency:{type:"string"},developerOnboarding:{type:"object",required:["adapters"],additionalProperties:!1,properties:{adapters:{type:"array",items:{type:"object",oneOf:[k,E,{type:"object",properties:{type:{type:"string",const:"GRAVITEE"},apiBaseUrl:{type:"string"},env:{type:"string"},allowApiProductsOutsideCatalog:{type:"boolean",default:!1},stage:{type:"string",default:"non-production"},auth:{type:"object",properties:{static:{type:"string"}}}},additionalProperties:!1,required:["type","apiBaseUrl"]}],discriminator:{propertyName:"type"}}}}},removeAttribution:{type:"boolean"},i18n:{type:"object",properties:{defaultLocale:{type:"string"},locales:{type:"array",items:{type:"object",properties:{code:{type:"string"},name:{type:"string"}},required:["code"]}}},additionalProperties:!1,required:["defaultLocale"]},metadata:{type:"object",additionalProperties:!0},ignore:{type:"array",items:{type:"string"}},theme:g,reunite:{type:"object",properties:{ignoreLinkChecker:{type:"boolean"}},additionalProperties:!1}},default:{redirects:{}},additionalProperties:!0},A=Object.assign(Object.assign({},_),{additionalProperties:!1}),j=Object.assign(Object.assign({},_),{properties:Object.assign(Object.assign({plugins:{type:"array",items:{type:"string"}}},_.properties),{env:{type:"object",additionalProperties:A}}),default:{},additionalProperties:!1})},6911:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>x});var n=r(6540),i=r(781);function o(e){var t,r,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t{const{lightTheme:e,darkTheme:n,options:o}=s,a={scrollYOffset:r||"string"!=typeof o.scrollYOffset?o.scrollYOffset:0},l=d()({...o,...a,theme:e},t),c=d()({...o,...a,theme:n},t);return{options:r&&i?c:l,darkThemeOptions:c,lightThemeOptions:l}}),[r,i,s,t])}var h=r(6025);let m=null;var g=r(4848);function y(e){return(0,g.jsx)("div",{className:"redocusaurus-styles"})}const v=function(e){const{className:t,optionsOverrides:r,...i}=e,{store:o,darkThemeOptions:c,lightThemeOptions:p,hasLogo:d}=function(e,t){let{spec:r,url:i,themeId:o}=e;const s=f(o,t),c=(0,h.A)(i,{absolute:!0}),p=(0,l.A)(),d="dark"===(0,u.G)().colorMode,g=(0,n.useMemo)((()=>(null!==m&&p&&m.dispose(),m=new a.AppStore(r,c,s.options),{...s,hasLogo:!!r.info?.["x-logo"],store:m})),[p,r,c,s]);return(0,n.useEffect)((()=>{g.store.onDidMount()}),[g,p,d]),g}(i,r);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(y,{specProps:i,lightThemeOptions:p,darkThemeOptions:c}),(0,g.jsx)("div",{className:s(["redocusaurus",d&&"redocusaurus-has-logo",t]),children:(0,g.jsx)(a.Redoc,{store:o})})]})};const b=function(e){const{className:t,optionsOverrides:r,spec:n,url:i,themeId:o,isSpecFile:l}=e,{options:c}=f(o,r);return n?(0,g.jsx)(v,{...e,spec:n}):(0,g.jsx)("div",{className:s(["redocusaurus",t]),children:(0,g.jsx)(a.RedocStandalone,{specUrl:i,options:c})})};const x=function(e){let{layoutProps:t,specProps:r}=e;const n=r.spec?.info?.title||"API Docs",o=r.spec?.info?.description||"Open API Reference Docs for the API";return(0,g.jsx)(i.A,{title:n,description:o,...t,children:(0,g.jsx)(b,{...r})})}},886:e=>{"use strict";function t(e,t,i){e instanceof RegExp&&(e=r(e,i)),t instanceof RegExp&&(t=r(t,i));var o=n(e,t,i);return o&&{start:o[0],end:o[1],pre:i.slice(0,o[0]),body:i.slice(o[0]+e.length,o[1]),post:i.slice(o[1]+t.length)}}function r(e,t){var r=t.match(e);return r?r[0]:null}function n(e,t,r){var n,i,o,s,a,l=r.indexOf(e),c=r.indexOf(t,l+1),u=l;if(l>=0&&c>0){if(e===t)return[l,c];for(n=[],o=r.length;u>=0&&!a;)u==l?(n.push(u),l=r.indexOf(e,u+1)):1==n.length?a=[n.pop(),c]:((i=n.pop())=0?l:c;n.length&&(a=[o,s])}return a}e.exports=t,t.range=n},3998:(e,t,r)=>{"use strict";var n=r(1137);e.exports=function(e,t){return e?void t.then((function(t){n((function(){e(null,t)}))}),(function(t){n((function(){e(t)}))})):t}},1137:e=>{"use strict";e.exports="object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:"function"==typeof setImmediate?setImmediate:function(e){setTimeout(e,0)}},5156:function(e,t){var r,n,i;n=[t],r=function(e){"use strict";e.__esModule=!0;var t={},r=Object.prototype.hasOwnProperty,n={memoize:function(e){var n=arguments.length<=1||void 0===arguments[1]?t:arguments[1],i=n.cache||{};return function(){for(var t=arguments.length,o=Array(t),s=0;s2?r:e).apply(void 0,i)}}function l(e){return function(t){return"function"==typeof t?e(t):function(r,n,i){i.value=e(i.value,t,r,n,i)}}}e.memoize=i,e.debounce=o,e.bind=s,e.default={memoize:i,debounce:o,bind:s}},void 0===(i="function"==typeof r?r.apply(t,n):r)||(e.exports=i)},2838:function(e){e.exports=function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,r){return t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},t(e,r)}function r(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function n(e,i,o){return n=r()?Reflect.construct:function(e,r,n){var i=[null];i.push.apply(i,r);var o=new(Function.bind.apply(e,i));return n&&t(o,n.prototype),o},n.apply(null,arguments)}function i(e){return o(e)||s(e)||a(e)||c()}function o(e){if(Array.isArray(e))return l(e)}function s(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function a(e,t){if(e){if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?r-1:0),i=1;i/gm),X=g(/\${[\w\W]*}/gm),J=g(/^data-[\-\w.\u00B7-\uFFFF]/),Z=g(/^aria-[\-\w]+$/),ee=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),te=g(/^(?:\w+script|data):/i),re=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=g(/^html$/i),ie=g(/^[a-z][.\w]*(-[.\w]+)+$/i),oe=function(){return"undefined"==typeof window?null:window},se=function(t,r){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var n=null,i="data-tt-policy-suffix";r.currentScript&&r.currentScript.hasAttribute(i)&&(n=r.currentScript.getAttribute(i));var o="dompurify"+(n?"#"+n:"");try{return t.createPolicy(o,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(s){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function ae(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:oe(),r=function(e){return ae(e)};if(r.version="2.5.4",r.removed=[],!t||!t.document||9!==t.document.nodeType)return r.isSupported=!1,r;var n=t.document,o=t.document,s=t.DocumentFragment,a=t.HTMLTemplateElement,l=t.Node,c=t.Element,u=t.NodeFilter,p=t.NamedNodeMap,d=void 0===p?t.NamedNodeMap||t.MozNamedAttrMap:p,f=t.HTMLFormElement,h=t.DOMParser,g=t.trustedTypes,y=c.prototype,v=M(y,"cloneNode"),b=M(y,"nextSibling"),x=M(y,"childNodes"),I=M(y,"parentNode");if("function"==typeof a){var R=o.createElement("template");R.content&&R.content.ownerDocument&&(o=R.content.ownerDocument)}var le=se(g,n),ce=le?le.createHTML(""):"",ue=o,pe=ue.implementation,de=ue.createNodeIterator,fe=ue.createDocumentFragment,he=ue.getElementsByTagName,me=n.importNode,ge={};try{ge=L(o).documentMode?o.documentMode:{}}catch(Dt){}var ye={};r.isSupported="function"==typeof I&&pe&&void 0!==pe.createHTMLDocument&&9!==ge;var ve,be,xe=G,we=K,Oe=X,Se=J,ke=Z,Ee=te,_e=re,Ae=ie,je=ee,Pe=null,$e=N({},[].concat(i(D),i(F),i(z),i(U),i(V))),Ce=null,Te=N({},[].concat(i(W),i(H),i(Q),i(Y))),Ie=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Re=null,Ne=null,Le=!0,Me=!0,De=!1,Fe=!0,ze=!1,Be=!0,Ue=!1,qe=!1,Ve=!1,We=!1,He=!1,Qe=!1,Ye=!0,Ge=!1,Ke="user-content-",Xe=!0,Je=!1,Ze={},et=null,tt=N({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),rt=null,nt=N({},["audio","video","img","source","image","track"]),it=null,ot=N({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),st="http://www.w3.org/1998/Math/MathML",at="http://www.w3.org/2000/svg",lt="http://www.w3.org/1999/xhtml",ct=lt,ut=!1,pt=null,dt=N({},[st,at,lt],E),ft=["application/xhtml+xml","text/html"],ht="text/html",mt=null,gt=255,yt=o.createElement("form"),vt=function(e){return e instanceof RegExp||e instanceof Function},bt=function(t){mt&&mt===t||(t&&"object"===e(t)||(t={}),t=L(t),ve=ve=-1===ft.indexOf(t.PARSER_MEDIA_TYPE)?ht:t.PARSER_MEDIA_TYPE,be="application/xhtml+xml"===ve?E:k,Pe="ALLOWED_TAGS"in t?N({},t.ALLOWED_TAGS,be):$e,Ce="ALLOWED_ATTR"in t?N({},t.ALLOWED_ATTR,be):Te,pt="ALLOWED_NAMESPACES"in t?N({},t.ALLOWED_NAMESPACES,E):dt,it="ADD_URI_SAFE_ATTR"in t?N(L(ot),t.ADD_URI_SAFE_ATTR,be):ot,rt="ADD_DATA_URI_TAGS"in t?N(L(nt),t.ADD_DATA_URI_TAGS,be):nt,et="FORBID_CONTENTS"in t?N({},t.FORBID_CONTENTS,be):tt,Re="FORBID_TAGS"in t?N({},t.FORBID_TAGS,be):{},Ne="FORBID_ATTR"in t?N({},t.FORBID_ATTR,be):{},Ze="USE_PROFILES"in t&&t.USE_PROFILES,Le=!1!==t.ALLOW_ARIA_ATTR,Me=!1!==t.ALLOW_DATA_ATTR,De=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Fe=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,ze=t.SAFE_FOR_TEMPLATES||!1,Be=!1!==t.SAFE_FOR_XML,Ue=t.WHOLE_DOCUMENT||!1,We=t.RETURN_DOM||!1,He=t.RETURN_DOM_FRAGMENT||!1,Qe=t.RETURN_TRUSTED_TYPE||!1,Ve=t.FORCE_BODY||!1,Ye=!1!==t.SANITIZE_DOM,Ge=t.SANITIZE_NAMED_PROPS||!1,Xe=!1!==t.KEEP_CONTENT,Je=t.IN_PLACE||!1,je=t.ALLOWED_URI_REGEXP||je,ct=t.NAMESPACE||lt,Ie=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&vt(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ie.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&vt(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ie.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ie.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ze&&(Me=!1),He&&(We=!0),Ze&&(Pe=N({},i(V)),Ce=[],!0===Ze.html&&(N(Pe,D),N(Ce,W)),!0===Ze.svg&&(N(Pe,F),N(Ce,H),N(Ce,Y)),!0===Ze.svgFilters&&(N(Pe,z),N(Ce,H),N(Ce,Y)),!0===Ze.mathMl&&(N(Pe,U),N(Ce,Q),N(Ce,Y))),t.ADD_TAGS&&(Pe===$e&&(Pe=L(Pe)),N(Pe,t.ADD_TAGS,be)),t.ADD_ATTR&&(Ce===Te&&(Ce=L(Ce)),N(Ce,t.ADD_ATTR,be)),t.ADD_URI_SAFE_ATTR&&N(it,t.ADD_URI_SAFE_ATTR,be),t.FORBID_CONTENTS&&(et===tt&&(et=L(et)),N(et,t.FORBID_CONTENTS,be)),Xe&&(Pe["#text"]=!0),Ue&&N(Pe,["html","head","body"]),Pe.table&&(N(Pe,["tbody"]),delete Re.tbody),m&&m(t),mt=t)},xt=N({},["mi","mo","mn","ms","mtext"]),wt=N({},["foreignobject","annotation-xml"]),Ot=N({},["title","style","font","a","script"]),St=N({},F);N(St,z),N(St,B);var kt=N({},U);N(kt,q);var Et=function(e){var t=I(e);t&&t.tagName||(t={namespaceURI:ct,tagName:"template"});var r=k(e.tagName),n=k(t.tagName);return!!pt[e.namespaceURI]&&(e.namespaceURI===at?t.namespaceURI===lt?"svg"===r:t.namespaceURI===st?"svg"===r&&("annotation-xml"===n||xt[n]):Boolean(St[r]):e.namespaceURI===st?t.namespaceURI===lt?"math"===r:t.namespaceURI===at?"math"===r&&wt[n]:Boolean(kt[r]):e.namespaceURI===lt?!(t.namespaceURI===at&&!wt[n])&&!(t.namespaceURI===st&&!xt[n])&&!kt[r]&&(Ot[r]||!St[r]):!("application/xhtml+xml"!==ve||!pt[e.namespaceURI]))},_t=function(e){S(r.removed,{element:e});try{e.parentNode.removeChild(e)}catch(Dt){try{e.outerHTML=ce}catch(Dt){e.remove()}}},At=function(e,t){try{S(r.removed,{attribute:t.getAttributeNode(e),from:t})}catch(Dt){S(r.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(We||He)try{_t(t)}catch(Dt){}else try{t.setAttribute(e,"")}catch(Dt){}},jt=function(e){var t,r;if(Ve)e=""+e;else{var n=_(e,/^[\r\n\t ]+/);r=n&&n[0]}"application/xhtml+xml"===ve&&ct===lt&&(e=''+e+"");var i=le?le.createHTML(e):e;if(ct===lt)try{t=(new h).parseFromString(i,ve)}catch(Dt){}if(!t||!t.documentElement){t=pe.createDocument(ct,"template",null);try{t.documentElement.innerHTML=ut?ce:i}catch(Dt){}}var s=t.body||t.documentElement;return e&&r&&s.insertBefore(o.createTextNode(r),s.childNodes[0]||null),ct===lt?he.call(t,Ue?"html":"body")[0]:Ue?t.documentElement:s},Pt=function(e){return de.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null,!1)},$t=function(e){return e instanceof f&&(void 0!==e.__depth&&"number"!=typeof e.__depth||void 0!==e.__removalCount&&"number"!=typeof e.__removalCount||"string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Ct=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},Tt=function(e,t,n){ye[e]&&w(ye[e],(function(e){e.call(r,t,n,mt)}))},It=function(e){var t;if(Tt("beforeSanitizeElements",e,null),$t(e))return _t(e),!0;if($(/[\u0080-\uFFFF]/,e.nodeName))return _t(e),!0;var n=be(e.nodeName);if(Tt("uponSanitizeElement",e,{tagName:n,allowedTags:Pe}),e.hasChildNodes()&&!Ct(e.firstElementChild)&&(!Ct(e.content)||!Ct(e.content.firstElementChild))&&$(/<[/\w]/g,e.innerHTML)&&$(/<[/\w]/g,e.textContent))return _t(e),!0;if("select"===n&&$(/