UniTime / unitime

Comprehensive University Timetabling System
http://www.unitime.org
Apache License 2.0
283 stars 163 forks source link

UniTime & API #80

Closed Abdulaziz-KTA closed 3 years ago

Abdulaziz-KTA commented 3 years ago

Can I use API to connect my database in azure to UniTime exists in google cloud ?

tomas-muller commented 3 years ago

No, the UniTime APIs cannot be used to connect UniTime to the database.

However, it is possible to change the UniTime connection properties to connect to a MySQL, PostgreSQL, or Oracle database running on a different machine than the UniTime instance -- see Timetabling Installation: Customization, Timetabling Installation: Using Oracle Database, and Timetabling Installation: Using PostgreSQL for more details.

Abdulaziz-KTA commented 2 years ago

how to integration to mysql to create new Session by use API??

tomas-muller commented 2 years ago

You can create a new academic session using the Academic Session Setup XML (see UniTime XML Interfaces for more details). An XML file can be imported using the Data Exchange page or the Data Exchange API.

Abdulaziz-KTA commented 2 years ago

Screenshot_56 1-this is admin user 2-this is default 3-how to find this?

Abdulaziz-KTA commented 2 years ago

Screenshot_57 Is this correct?

tomas-muller commented 2 years ago

As for your first question,

  1. yes, you need to provide basic authentication (a user that can use the Data Exchange page) -- see the first part of the API documentation for more details (e.g., it is also possible to pass an API token instead)
  2. this is the API endpoint, it must be UniTime/api/exchange for the Data Exchange API
  3. you are trying a GET request, it will export an XML -- for that you need to provide the academic session for which the export should be done (term parameter in the format of term+year or term+year+initiative if term and year are not unique) and which export you want to run (type parameter which is the name of the root element of the export you want to run, e.g., sessionSetup for the Academic Session Setup XML).

As for your second question, No, this is not correct. It is not even a valid URL. So, perhaps something like:

https://localhost:8080/UniTime/api/exchange?term=Fal2010woebegon&type=sessionSetup
Abdulaziz-KTA commented 2 years ago

image image image

It doesn't work I did all the settings!

tomas-muller commented 2 years ago

The error is there because of the https protocol -- you do not have SSL enabled, so

http://localhost:8080/UniTime/api/exchange?term=Fal2010woebegon&type=sessionSetup

There is no XML at the end of the URL, just the name of the root element of the XML you want to export.

Or perhaps, you can just use the Administration > Academic Sessions > Data Exchange page?

Abdulaziz-KTA commented 2 years ago

thank you sorry about xml I explain my friend insert data into Data Exchange API

Abdulaziz-KTA commented 2 years ago

image Why not work?

tomas-muller commented 2 years ago

Do you have the admin user with admin password? You can try to add -v to see more details

curl -u admin:admin -v "http://localhost:8080/UniTime/api/buildings?term=Fal2010"

You should see something like this:

*   Trying ::1:8080...
* Connected to localhost (::1) port 8080 (#0)
* Server auth using Basic with user 'admin'
> GET /UniTime/api/buildings?term=Fal2010 HTTP/1.1
> Host: localhost:8080
> Authorization: Basic YWRtaW46YWRtaW4=
> User-Agent: curl/7.70.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 
< Set-Cookie: JSESSIONID=0A7110E5F41561CE5970B04A989AA4E9; Path=/UniTime; HttpOnly
< Pragma: no-cache
< Cache-Control: must-revalidate
< Cache-Control: no-cache
< Cache-Control: no-store
< Date: Wed, 01 Dec 2021 08:26:30 GMT
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Content-Disposition: attachment; filename="response.json"
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< 
[
  {
    "id": 1782,
    "abbreviation": "EDUC",
    "name": "Education Hall",
    "x": 1.0,
    "y": 1.0
  },
  {
    "id": 1783,
    "abbreviation": "THTR",
    "name": "Theater of Performing Arts",
    "x": 2.0,
    "y": 1.0
  }
* Connection #0 to host localhost left intact
]
Abdulaziz-KTA commented 2 years ago

image i get HTTP/1.1 401

tomas-muller commented 2 years ago

Looks like it cannot authenticate. Do you have the admin user with admin password?

You can also try to use the API token instead:

curl -v "http://localhost:8080/UniTime/api/buildings?term=Fal2010&token=1xhp5vo3zfxrpbzjzhtanmcipolx03fv42ohz4xa507x5acydh"

Resulting in

*   Trying ::1:8080...
* Connected to localhost (::1) port 8080 (#0)
> GET /UniTime/api/buildings?term=Fal2010&token=1xhp5vo3zfxrpbzjzhtanmcipolx03fv42ohz4xa507x5acydh HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.70.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 
< Set-Cookie: JSESSIONID=41EA85D783A0A536DE3EC2D4E45A3BCD; Path=/UniTime; HttpOnly
< Pragma: no-cache
< Cache-Control: must-revalidate
< Cache-Control: no-cache
< Cache-Control: no-store
< Date: Wed, 01 Dec 2021 08:32:55 GMT
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Content-Disposition: attachment; filename="response.json"
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< 
[
  {
    "id": 1782,
    "abbreviation": "EDUC",
    "name": "Education Hall",
    "x": 1.0,
    "y": 1.0
  },
  {
    "id": 1783,
    "abbreviation": "THTR",
    "name": "Theater of Performing Arts",
    "x": 2.0,
    "y": 1.0
  }
* Connection #0 to host localhost left intact
]

You can find the token on the Administration > Other > Users page, API Secret column. Please note that it may be different from the one I have above! It gets generated from both the username and password.

Screenshot 2021-12-01 at 9 33 19
Abdulaziz-KTA commented 2 years ago

yes admin user with admin password


C:\Windows\system32>curl -v "http://localhost:8080/UniTime/api/buildings?term=Fal2010&token=1xhp5vo3zfxrpbzjzhtanmcipolx03fv42ohz4xa507x5acydh"
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /UniTime/api/buildings?term=Fal2010&token=1xhp5vo3zfxrpbzjzhtanmcipolx03fv42ohz4xa507x5acydh HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.55.1
> Accept: */*
>
< HTTP/1.1 400
< Set-Cookie: JSESSIONID=02504A4350A0A43177EC36B111EE37EF; Path=/UniTime; HttpOnly
< Pragma: no-cache
< Cache-Control: must-revalidate
< Cache-Control: no-cache
< Cache-Control: no-store
< Date: Wed, 01 Dec 2021 08:40:12 GMT
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Content-Disposition: attachment; filename="response.json"
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Connection: close
<
{
  "code": 400,
  "message": "Failed to decode API token: No row with the given identifier exists: [org.unitime.timetable.model.Session#22577152]",
  "parameters": {
    "term": "Fal2010",
    "token": "1xhp5vo3zfxrpbzjzhtanmcipolx03fv42ohz4xa507x5acydh"
  },
  "exception": [
    "java.lang.IllegalArgumentException: Failed to decode API token: No row with the given identifier exists: [org.unitime.timetable.model.Session#22577152]",
    "at org.unitime.timetable.api.UsersApiToken.getContext(UsersApiToken.java:112)",
    "at org.unitime.timetable.api.ApiConnector.authenticateWithTokenIfNeeded(ApiConnector.java:76)",
    "at org.unitime.timetable.api.ApiConnector.doGet(ApiConnector.java:87)",
    "at org.unitime.timetable.api.ApiServlet.doGet(ApiServlet.java:84)",
    "at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)",
    "at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.BusySessions$Filter.doFilter(BusySessions.java:85)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.QueryLogFilter.doFilter(QueryLogFilter.java:118)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.PageAccessFilter.doFilter(PageAccessFilter.java:164)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.MessageLogFilter.doFilter(MessageLogFilter.java:93)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)",
    "at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)",
    "at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)",
    "at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)",
    "at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)",
    "at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)",
    "at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)",
    "at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)",
    "at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.HibSessionFilter.doFilter(HibSessionFilter.java:70)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.EncodingFilter.doFilter(EncodingFilter.java:50)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:201)",
    "at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)",
    "at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)",
    "at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)",
    "at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)",
    "at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)",
    "at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)",
    "at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)",
    "at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)",
    "at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)",
    "at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)",
    "at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629)",
    "at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)",
    "at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)",
    "at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)",
    "at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)",
    "at java.base/java.lang.Thread.run(Thread.java:830)",
    "Caused by: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [org.unitime.timetable.model.Session#22577152]",
    "at org.hibernate.internal.SessionFactoryImpl$1$1.handleEntityNotFound(SessionFactoryImpl.java:253)",
    "at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:262)",
    "at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:176)",
    "at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286)",
    "at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)",
    "at org.unitime.timetable.model.Session_$$_jvst2b4_cc.equals(Session_$$_jvst2b4_cc.java)",
    "at org.unitime.timetable.security.context.UniTimeUserContext.\u003cinit\u003e(UniTimeUserContext.java:121)",
    "at org.unitime.timetable.security.context.UniTimeUserContext.\u003cinit\u003e(UniTimeUserContext.java:61)",
    "at org.unitime.timetable.api.UsersApiToken.getContext(UsersApiToken.java:105)",
    "at org.unitime.timetable.api.ApiConnector.authenticateWithTokenIfNeeded(ApiConnector.java:76)",
    "at org.unitime.timetable.api.ApiConnector.doGet(ApiConnector.java:87)",
    "at org.unitime.timetable.api.ApiServlet.doGet(ApiServlet.java:84)",
    "at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)",
    "at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.BusySessions$Filter.doFilter(BusySessions.java:85)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.QueryLogFilter.doFilter(QueryLogFilter.java:118)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.PageAccessFilter.doFilter(PageAccessFilter.java:164)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.MessageLogFilter.doFilter(MessageLogFilter.java:93)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)",
    "at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)",
    "at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)",
    "at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)",
    "at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)",
    "at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)",
    "at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)",
    "at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)",
    "at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)",
    "at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)",
    "at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.HibSessionFilter.doFilter(HibSessionFilter.java:70)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.unitime.timetable.filter.EncodingFilter.doFilter(EncodingFilter.java:50)",
    "at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
    "at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
    "at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:201)",
    "at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)",
    "at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)",
    "at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)",
    "at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)",
    "at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)",
    "at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)",
    "at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)",
    "at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)",
    "at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)",
    "at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)",
    "at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629)",
    "at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)",
    "at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)",
    "at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)",
    "at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)",
    "at java.base/java.lang.Thread.run(Thread.java:830)"
  ]
}* Closing connection 0
Abdulaziz-KTA commented 2 years ago

Thank you, it's work I restore backup for 1 month and make unitime.api.canUseToken true and make all api user permissions true.

Abdulaziz-KTA commented 2 years ago

How to use Academic Session Setup XML import data??? when I use that I get this error image image

here in website. image

tomas-muller commented 2 years ago

As for the import, the academic year is supposed to be four digits, but you have five. Hence the "Data too long for column 'academic_year'" error.

As for the curl command, your URL is wrong -- you have http:// listed two times. How about:

curl -uadmin:admin -k -X POST -H "Content-Type:application/xml;charset=UTF-8" -d @sessionSetup.xml "http://localhost:8080/UniTime/api/exchange"
Abdulaziz-KTA commented 2 years ago

image image Is correct for new session??

tomas-muller commented 2 years ago

The year is still too long -- it is limited to 4 characters. Also, it complains about the header (Error on line 1 of document: Content is not allowed in prolog). The file must start with

<?xml version="1.0" encoding="utf-8"?> 

With the correct encoding. There cannot be anything before the <?xml, not even a space, a special character, or a blank line.

Abdulaziz-KTA commented 2 years ago

thank you

Abdulaziz-KTA commented 2 years ago

can I use curl to insert data from web api .net(like xml file)? image like this curl -uadmin:admin -k -X POST -H "Content-Type:application/**URL**;charset=UTF-8" -d @**http://localhost:5000/Staff** "http://localhost:8080/UniTime/api/exchange" (not work url)

tomas-muller commented 2 years ago

I think you would need to have one curl call to get the data and the second one to call UniTime's API. It should be possible to pipe them, something like:

curl "http://localhost:5000/Staff" | curl -uadmin:admin -k -X POST -H "Content-Type:application/xml;charset=UTF-8" -d @- "http://localhost:8080/UniTime/api/exchange"

(-d @- will tell curl to read the data from stdin instead of a file)

Abdulaziz-KTA commented 2 years ago

thank you it is work.